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 появляется ошибка, что для имени пользователя допускаются только символы и числа.

Другие вопросы по тегам