Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC中用户名中的非字母数字字符_C#_Asp.net_Asp.net Mvc_Asp.net Identity - Fatal编程技术网

C# MVC中用户名中的非字母数字字符

C# MVC中用户名中的非字母数字字符,c#,asp.net,asp.net-mvc,asp.net-identity,C#,Asp.net,Asp.net Mvc,Asp.net Identity,我成功地在用户名中获得了非字母数字字符,现在的问题是,当我尝试为用户分配角色时,它抛出了一个无效的用户名错误。它说“只能包含字母和数字 这是我添加的允许用户名中的字符 public AccountController(UserManager<ApplicationUser> userManager) { UserManager = userManager; var userValidator = UserManager.UserValidato

我成功地在用户名中获得了非字母数字字符,现在的问题是,当我尝试为用户分配角色时,它抛出了一个无效的用户名错误。它说“只能包含字母和数字

这是我添加的允许用户名中的字符

public AccountController(UserManager<ApplicationUser> userManager)
    {
        UserManager = userManager;
        var userValidator = UserManager.UserValidator as   UserValidator<ApplicationUser>;
        userValidator.AllowOnlyAlphanumericUserNames = false;
    }
publiccountcontroller(UserManager UserManager)
{
UserManager=UserManager;
var userValidator=UserManager.userValidator作为userValidator;
userValidator.AllowOnlyAlphanumericUserNames=false;
}
这就是我得到错误的地方

public bool AddUserToRole(string userId, string roleName)
    {
        var um = new UserManager<ApplicationUser>(
            new UserStore<ApplicationUser>(new ApplicationDbContext()));
        var idResult = um.AddToRole(userId, roleName);
        return idResult.Succeeded;
public bool AddUserToRole(字符串userId,字符串roleName)
{
var um=新用户管理器(
新的用户存储(新的ApplicationDbContext());
var idResult=um.AddToRole(userId,roleName);
返回idResult.successed;
idResult.Erorrs[0]=“用户名J.Blow无效,只能包含字母或数字。

为什么我会收到这个。我需要在其他地方更改用户名的有效性吗

提前谢谢


Clint

根据您的代码,您正在创建一个新的
UserManager
实例,并在
AddUserToRole
方法中使用该实例。因此,忽略在控制器中设置的
UserManager


如果您重构代码,以便可以在
AddUserToRole
方法中使用控制器中实例化的一个实例,那么应该可以使用。

根据您的代码,您正在创建一个
UserManager
的新实例,并在
AddUserToRole
方法中使用该实例。因此忽略
UserManager
您在控制器中设置


如果您重构代码以便可以在
AddUserToRole
方法中使用控制器中实例化的代码,那么应该可以使用。

um.UserValidator
需要指向您的
UserValidator
实例。
um.UserValidator
需要指向您的
UserValidator
实例。另一种方法是nk。每次你说new SomeClass时,你都会创建它的一个新副本。对一个副本进行更改对另一个副本没有影响。你要么需要将验证器添加到第二个代码段中的代码中,要么将注入控制器的用户管理器传递回服务层(或者第二个代码块所在的位置)我刚刚将验证器添加到新代码段以使其暂时工作。使用此标识框架对我来说仍然有点灰色。谢谢你的帮助。另一种思考方式。每次你说new SomeClass时,你都会创建它的新副本。对一个副本进行更改对另一个副本没有影响。你或者需要添加你的va将lidator添加到第二个代码段中的代码,或将注入控制器的用户管理器传递回服务层(或第二个代码块所在的位置)。我刚刚将验证器添加到新的代码段中,以使其暂时正常工作。使用此标识框工作对我来说仍然有点灰色。感谢您的帮助。