UserManager.CreateAsync .Success始终返回false
我想在我的ASP.Net MVC 5.0应用程序使用下面的函数编程方式将用户添加到AspNetUsers表:UserManager.CreateAsync .Success始终返回false
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表,并且如预期的那样,用户没有被添加。
任何想法我怎么能找出什么是错的,如何解决呢?
谢谢。
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.Add("", message);
}
感谢@Nkosi。感到愚蠢的是,我没有考虑过究竟是什么东西。我只是看着'.Succeed'。无论如何,问题解决了。有2个不同的连接字符串定义,只是清除数据库之一。无论如何全部排序。再次感谢。 – Thierry
你可以把try catch来检查实际的错误。
try{
var result = await this.UserManager.CreateAsync(user, password);
}
catch(exception ex)
{
through ex;
}
得到确切的错误后,最好删除try catch块。
没有错误发生。 – Thierry
检查结果错误消息,找出为什么保存失败。 – Nkosi