ASP.NET身份UserManager UpdateAsync返回null

时间:2019-02-27 15:42:27

标签: asp.net asp.net-web-api asp.net-identity

我想更新用户个人资料。为此,我在Web api中编写了“更改配置文件”方法。由于“ UpdateAsync ”始终返回null,因此我在更新用户数据时遇到问题。

ChangeProfile

[HttpPost]
[Route("api/ChangeProfile")]
[ResponseType(typeof(AccountModel))]
public async Task<IHttpActionResult> ChangeProfile([FromBody]AccountModel model)
{
    var userStore = new UserStore<ApplicationUser>(new ApplicationDbContext());
    var manager = new UserManager<ApplicationUser>(userStore);
    var user = await manager.FindByNameAsync(model.UserName);
    if (user != null)
    {
        var updateUser = new ApplicationUser()
        {   UserName = model.UserName,
            Email = model.Email,
            FirstName = model.FirstName,
            LastName = model.LastName,

        };

        IdentityResult result = await manager.UpdateAsync(updateUser);

        return Ok(result);
    }
    else
    {
        return NotFound();
    }
}

帐户模型:

  public class AccountModel
{
    public string UserName { get; set; }
    public string Email { get; set; }
    public string Password { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string LoggedOn { get; set; }
    public string Roles { get; set; }
}

欢迎任何帮助或建议。

1 个答案:

答案 0 :(得分:2)

首先,您需要进一步调试。

此外,必须创建从数据库中检索到的用户的字段,而不是创建新的AplicationUser。

 if (user != null)
 {        
    user.UserName = model.UserName,
    user.Email = model.Email,
    user.FirstName = model.FirstName,
    user.LastName = model.LastName,
 };

 IdentityResult result = await manager.UpdateAsync(updateUser);
 return Ok(result);
 }

致谢。