我有一个简单的webapi端点,它只更新身份用户的FirstName和LastName:
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表的所有电子邮件地址设置为";myemail@gmail.com"以便测试电子邮件通知。
这实际上使aspnet标识无效,结果是在调用UserManager.update(user(时没有对数据库进行更新,也没有返回任何错误。
希望它能有所帮助,我已经花了4小时调试这个问题