ASP.Net UserManager AddRoleTo не работает
С VS 2015 я создал небольшое приложение 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.AddToRole(user.Id, "User");" не выдает исключение, никакой следующий зарегистрированный пользователь не назначен на эту роль (проверил таблицу, а также на Авторизацию (Роль...). Я не могу понять, что здесь не так.
1 ответ
Я понял это. Я использовал общие адреса электронной почты со знаком "+" в имени пользователя, например, user+01@mydomain.com. Это не вызывает проблем при регистрации и не вызывает исключений при попытке / перехвате метода AddRoleTo, но в стеке результатов AddRoleTo появляется ошибка, что для имени пользователя допускаются только символы и числа.