C# ASP.Net用户管理器添加角色不工作
使用VS2015,我创建了一个带有默认身份验证功能的小MVC应用程序。 我只更改了帐户管理员注册操作中的代码: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
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的结果堆栈中出现一个错误,即用户名只允许使用字符和数字