UserManager.CreateAsync .Success始终返回false

时间:2017-08-17 02:06:48

标签: c# asp.net-mvc asp.net-mvc-4

我正在尝试使用以下函数以编程方式将用户添加到我的ASP.Net MVC 5.0应用程序中的AspNetUsers表中:

private async Task AddUser(DataImportMember member)
{
    var user = new ApplicationUser
    {
        UserName = member.Email,
        Email = member.Email,
        UserType = UserType.IsMember
    };

    var password = RandomPassword.Generate();
    var result = await this.UserManager.CreateAsync(user, password);
    if (result.Succeeded)
    {
        await this.UserManager.AddToRoleAsync(user.Id, MyApp.IsMember);
    }
}

但每当我致电this.UserManager.CreateAsync时,result.Succeed始终为假。我已经检查了AspNetUsers表,并且正如预期的那样,没有添加用户。

我有什么想法可以弄清楚什么是错的以及如何解决它?

感谢。

2 个答案:

答案 0 :(得分:3)

UserManager.CreateAsync会返回IdentityResult,其中还包含操作失败的任何错误。您应该检查结果错误消息,以找出操作失败的原因。

var result = await this.UserManager.CreateAsync(user, password);
if (result.Succeeded) {
    await this.UserManager.AddToRoleAsync(user.Id, MyApp.IsMember);
} else {
    var errors = result.Errors;
    var message = string.Join(", ", errors);
    ModelState.AddModelError("", message);
}

答案 1 :(得分:0)

您可以使用try catch来检查实际错误。

   try{
        var result = await this.UserManager.CreateAsync(user, password);
    }
    catch(exception ex)
    {
     through ex;
    }

在得到确切的错误之后,最好删除try catch块。