我正在尝试使用以下函数以编程方式将用户添加到我的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表,并且正如预期的那样,没有添加用户。
我有什么想法可以弄清楚什么是错的以及如何解决它?
感谢。
答案 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块。