为什么 CreateAsync(user, password) 有时会失败? (身份 v2 MVC5)

Why would CreateAsync(user, password) sometimes fail? (Identity v2 MVC5)

我正在使用 Asp.Net MVC5 with Identity v2 进行身份验证。我为用户创建编写的函数在开发过程中运行良好。但是,由于我几天前发布了产品,我 有时 会收到 CreateAsync(user, pass) 方法的异常。这是我的简化代码:

 var store = new UserStore<SiteUser>(dc);
 var userManager = new UserManager<SiteUser>(store);

var user = new SiteUser
                {
                    UserName = email,
                    Email = email,
                    MemberID = member.MemberID
                };
var createResult = await userManager.CreateAsync(user, rawPassword);

if (!createResult.Succeeded)
    throw new Exception("User Creation Failed - Identity Exception");

我的问题是,为什么我 有时 会收到此异常?也就是说,这个CreateAsync方法在什么条件下会[=2​​2=]!createResult.Succeeded

感谢@alex-art,我才得以解决问题。这是 UserManager class 中定义的规则,它不接受电子邮件/用户名中的非字母数字值。我在 ApplicationUserManager : UserManager 中扩展了 UserManager 以包含

AllowOnlyAlphanumericUserNames = false

解决这个问题。

我能够通过查看 createResult.Errors 列表来识别问题(@alex-art 指出。我通过将异常日志更改为:

if (!createResult.Succeeded)
{
    var exceptionText = createResult.Errors.Aggregate("User Creation Failed - Identity Exception. Errors were: \n\r\n\r", (current, error) => current + (" - " + error + "\n\r"));
    throw new Exception (exceptionText);
}