ASP.NET Identity 的 UserManager 中的错误

Bug in ASP.NET Identity's UserManager

MVC5 的 UserManager 似乎有一个错误:

我的代码:

public void InsertUser(KoreUser user, string password)
{
    var appUser = new ApplicationUser
    {
        UserName = user.UserName,
        Email = user.Email,
        LockoutEnabled = user.IsLockedOut
    };
    userManager.Create(appUser, password);
}

此代码在几乎所有情况下都可以正常工作。当用户名包含 space 时除外。例如:

JohnDoe - 很好

John Doe - 不太好..

在后一个例子中,它默默地失败了;没有抛出异常..这里有什么问题?

这不是错误。不会抛出异常,因为在用户身份验证领域预计用户名无效是合理的。

创建用户名时的默认检查使用正则表达式模式 ^[A-Za-z0-9@_\.]+$ 在创建用户之前验证名称。空白字符未通过此测试。

另一个需要注意的是,Usermanager 的 Create 方法 returns 是一个 IdentityResult 类型的对象。使用该对象,您可以检查是否成功并查看在未创建用户的情况下返回的错误。