我正在使用带有身份验证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/