C# 如何在ASP.NET核心Mvc中使用Unicode字符作为用户名?

C# 如何在ASP.NET核心Mvc中使用Unicode字符作为用户名?,c#,unicode,asp.net-identity,asp.net-core-mvc-2.0,C#,Unicode,Asp.net Identity,Asp.net Core Mvc 2.0,在我的ASP.NET核心应用程序中,我想从英语以外的其他语言获取用户名,但当我尝试创建一个用户时,出现了错误 “用户名‘myUnicodeLang’无效,只能包含字母或数字。” 如何允许我的用户管理器使用Unicode字符?我发现了一个问题,如何将电子邮件作为用户名,解决方案是 UserManager.UserValidator = new UserValidator<ApplicationUser>(UserManager) { AllowOnlyAlphanumeri

在我的ASP.NET核心应用程序中,我想从英语以外的其他语言获取用户名,但当我尝试创建一个用户时,出现了错误

“用户名‘myUnicodeLang’无效,只能包含字母或数字。”

如何允许我的
用户管理器使用Unicode字符?我发现了一个问题,如何将电子邮件作为用户名,解决方案是

UserManager.UserValidator = new UserValidator<ApplicationUser>(UserManager) 
{ 
    AllowOnlyAlphanumericUserNames = false 
};
UserManager.UserValidator=新的UserValidator(UserManager)
{ 
AllowOnlyAlphanumericUserNames=false
};
但是它在我的项目中不起作用,它说
使用泛型类型UserManager需要1个类型参数

#编辑

控制器构造函数

public AuthController(UserManager<SchoolUser> userManager,
        SignInManager<SchoolUser> signInManager)
    {
        _userManager = userManager;
        _signInManager = signInManager;

        //Error here
        UserManager.UserValidator = new UserValidator<SchoolUser>
        (userManager) 
         { 
           AllowOnlyAlphanumericUserNames = false };
         }
     }
public AuthController(UserManager UserManager,
SignInManager(签名管理员)
{
_userManager=userManager;
_signInManager=signInManager;
//这里出错
UserManager.UserValidator=新的UserValidator
(用户管理器)
{ 
AllowOnlyAlphanumericUserNames=false};
}
}

问题中的代码看起来像是试图将ASP.NET MVC代码添加到核心MVC项目中。这不起作用,因为在ASP.NET核心MVC中,UserManager没有UserValidator属性。它有一个
UserValidators
集合,允许添加多个自定义验证器

UserValidator也已更改,并且本身不包含任何配置设置

配置允许的字符的最简单方法是在
Startup.ConfigureServices
中使用允许设置属性的
AddIdentity()
重载。替换:

services.AddIdentity<ApplicationUser, IdentityRole>()

问题中的代码看起来像是试图将ASP.NET MVC代码添加到核心MVC项目中。这不起作用,因为在ASP.NET核心MVC中,UserManager没有UserValidator属性。它有一个
UserValidators
集合,允许添加多个自定义验证器

UserValidator也已更改,并且本身不包含任何配置设置

配置允许的字符的最简单方法是在
Startup.ConfigureServices
中使用允许设置属性的
AddIdentity()
重载。替换:

services.AddIdentity<ApplicationUser, IdentityRole>()

.NET字符串是Unicode。但错误并不是这样说的。它说登录名的验证规则只允许拉丁字母和数字。@Panagiotis Kanavos,是的,我知道,但如何设置自定义验证?另一方面,用户登录名不是用户名。想象一下,如果你使用的机器没有合适的keybard@Panagiotis Kanavos,你试图从国外登录一个网站,想象一下它只在一个固定的区域使用,那么我怎么做?你已经找到了方法。语法错误抱怨实际错误-在调用
newuservalidator(UserManager)
时,您应该传递一个实际的UserManager实例,而不是类型名称。NET字符串是Unicode。但错误并不是这样说的。它说登录名的验证规则只允许拉丁字母和数字。@Panagiotis Kanavos,是的,我知道,但如何设置自定义验证?另一方面,用户登录名不是用户名。想象一下,如果你使用的机器没有合适的keybard@Panagiotis Kanavos,你试图从国外登录一个网站,想象一下它只在一个固定的区域使用,那么我怎么做?你已经找到了方法。语法错误抱怨实际错误-在调用
新UserValidator(UserManager)
时,在向
选项.User.AllowedUserNameCharacters添加
myUnicodes后,您应该传递实际的UserManager实例,而不是类型名称它正在工作
选项.User.AllowedUserNameCharacters
services.AddIdentity<ApplicationUser, IdentityRole>(options=>
{
    var allowed = options.User.AllowedUserNameCharacters 
                  + "........";
    options.User.AllowedUserNameCharacters = allowed;
})