我使用带有Identity v2的Asp.Net MVC5进行身份验证。我为用户创建而编写的功能在开发过程中完美运行。但是,自从我几天前发布了用于制作的文章以来,我有时为CreateAsync(用户,传递)方法获取了异常。这是我的简化代码:
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
的条件是什么?
答案 0 :(得分:5)
感谢@ 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);
}