Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.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# ASP.Net用户管理器添加角色不工作_C#_Asp.net Mvc_Role_Usermanager - Fatal编程技术网

C# ASP.Net用户管理器添加角色不工作

C# ASP.Net用户管理器添加角色不工作,c#,asp.net-mvc,role,usermanager,C#,Asp.net Mvc,Role,Usermanager,使用VS2015,我创建了一个带有默认身份验证功能的小MVC应用程序。 我只更改了帐户管理员注册操作中的代码: var context = new ApplicationDbContext(); if (ModelState.IsValid) { var user = new ApplicationUser { UserName = model.Email, Email = model.Email }; var result = await UserManager.CreateA

使用VS2015,我创建了一个带有默认身份验证功能的小MVC应用程序。 我只更改了帐户管理员注册操作中的代码:

var context = new ApplicationDbContext();
if (ModelState.IsValid)
{
    var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
    var result = await UserManager.CreateAsync(user, model.Password);

    var roleStore = new RoleStore<IdentityRole>(context);
    var roleManager = new RoleManager<IdentityRole>(roleStore);

    var userStore = new UserStore<ApplicationUser>(context);
    var userManager = new UserManager<ApplicationUser>(userStore);

    if (!roleManager.RoleExists("Administrator"))
    {
        roleManager.Create(new IdentityRole("Administrator"));
    }
    if (!roleManager.RoleExists("User"))
    {
        roleManager.Create(new IdentityRole("User"));
    }

    if (context.Users.Count() == 1)
    {
        userManager.AddToRole(user.Id, "Administrator");
    } else
    {
        try
        {
            userManager.AddToRole(user.Id, "User");
        }
        catch (Exception ex)
        {
            throw new Exception("Error assigning role: " + ex.Message);
        }
    }
第一个注册的用户成为管理员。通过userManager.AddToRoleuser.Id,User;不引发异常没有将以下注册用户分配给该角色检查表和每个角色。。。。
我想不出这里出了什么问题。

我想出来了。我使用了用户名中带有+的通用电子邮件地址,例如user+01@mydomain.com. 这不会在注册时造成问题,并且在尝试/捕获AddRoleTo方法时不会引发异常,但在AddRoleTo的结果堆栈中出现一个错误,即用户名只允许使用字符和数字