ASP.NET Identity UserManager UpdateAsync возвращает ноль - PullRequest
0 голосов
/ 27 февраля 2019

Я хотел бы обновить профиль пользователя.Для этого я написал метод «Изменить профиль» в веб-интерфейсе. У меня проблема с обновлением пользовательских данных, поскольку « UpdateAsync » все время возвращает ноль.

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();
    }
}

AccountModel:

  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 голосов
/ 27 февраля 2019

Сначала вам нужно сделать еще один шаг в отладке.

Кроме того, вместо создания нового пользователя 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);
 }

С уважением.

...