我正在使用带有身份验证v2的Asp.Net MVC5进行身份验证。我为用户创建编写的功能在开发过程中完美运行。但是,由于几天前我已经发布了产品,所以有时我会遇到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方法将在什么条件下返回!createResult.Succeeded

最佳答案

感谢@ alex-art,我得以找出问题所在。这是UserManager类中定义的规则,该规则不接受电子邮件/用户名中的非字母数字值。我在UserManager中扩展了ApplicationUserManager : 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);
}

关于asp.net-mvc - 为什么有时CreateAsync(user,password)会失败? (身份v2 MVC5),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33074990/

10-09 08:19