ASPNET Identity 2.0 - UserManager.Update 不适用于某些用户
ASPNET Identity 2.0 - UserManager.Update not working on some users
我有一个简单的 webapi 端点,它只更新身份用户的名字和姓氏:
public async Task<IHttpActionResult> UpdateUser(UpdateUserBindingModel updateUserModel)
{
try
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
var user = this.AppUserManager.FindById(updateUserModel.Id);
if (user != null)
{
user.Email = updateUserModel.Email;
user.FirstName = updateUserModel.FirstName;
user.LastName = updateUserModel.LastName;
this.AppUserManager.Update(user);
return Ok("");
}
else
{
return BadRequest("ERROR001 on UpdateUser");
}
}
catch (Exception e)
{
return BadRequest(e.Message);
}
}
我已经在调试中进行了检查,我可以向您保证执行对所有用户都运行良好,但是
对于其中一些,更新未反映到数据库数据中...
我也尝试检查 SQL PROFILER,对于那些用户,我找不到任何记录的 UPDATE 命令。
可能是什么问题?
第一次遇到这样的事情...
我找到问题了!!!
这很巧妙:在测试环境中,我已将 ASPNETUSERS table 的所有电子邮件地址设置为“myemail@gmail.com”以测试电子邮件通知。
这实际上使 aspnet 身份无效,结果是在调用 UserManager.Update(user) 时没有对数据库进行更新,也没有返回任何错误。
希望它能帮到你,我花了 4 小时调试这个问题
我有一个简单的 webapi 端点,它只更新身份用户的名字和姓氏:
public async Task<IHttpActionResult> UpdateUser(UpdateUserBindingModel updateUserModel)
{
try
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
var user = this.AppUserManager.FindById(updateUserModel.Id);
if (user != null)
{
user.Email = updateUserModel.Email;
user.FirstName = updateUserModel.FirstName;
user.LastName = updateUserModel.LastName;
this.AppUserManager.Update(user);
return Ok("");
}
else
{
return BadRequest("ERROR001 on UpdateUser");
}
}
catch (Exception e)
{
return BadRequest(e.Message);
}
}
我已经在调试中进行了检查,我可以向您保证执行对所有用户都运行良好,但是 对于其中一些,更新未反映到数据库数据中...
我也尝试检查 SQL PROFILER,对于那些用户,我找不到任何记录的 UPDATE 命令。
可能是什么问题? 第一次遇到这样的事情...
我找到问题了!!!
这很巧妙:在测试环境中,我已将 ASPNETUSERS table 的所有电子邮件地址设置为“myemail@gmail.com”以测试电子邮件通知。
这实际上使 aspnet 身份无效,结果是在调用 UserManager.Update(user) 时没有对数据库进行更新,也没有返回任何错误。
希望它能帮到你,我花了 4 小时调试这个问题