MVC - Roles.AddUserToRole создает исключение ProviderException. Пользователь @username не был найден

Я впервые использую RoleManager, и у меня возникла проблема с добавлением имени пользователя в роль. Цель состоит в том, чтобы проверить, является ли пользователь (который в настоящее время входит в систему) администратором или нет (isAdmin = 1 в базе данных SQL). То, что я использую в моем LoginController:

var usr = db.Users.Where(u => u.UserName.ToLower() == userLogin.UserName.ToLower() && 
u.Password.Equals(userLogin.Password, StringComparison.Ordinal)).FirstOrDefault();

if (usr != null)
{
   FormsAuthentication.SetAuthCookie(usr.UserName, false);
   if (usr.IsAdmin == true)
   {
      if(!Roles.RoleExists("Admin"))
           Roles.CreateRole("Admin");
           var x = Roles.GetAllRoles();
           if(!Roles.IsUserInRole(usr.UserName, "Admin"))
               Roles.AddUserToRole(usr.UserName, "Admin");
    }
    return RedirectToAction("Index", "Home");
}

Я устанавливаю точки останова в каждой из этих строк, и Roles.CreateRole("Admin"); никогда не достигается, что подразумевает, что есть роль с именем "Администратор". Тем не мение, var x = Roles.GetAllRoles(); всегда показывает ноль.

if(!Roles.IsUserInRole(usr.UserName, "Admin")) всегда достигается, так что пользователь в настоящее время не назначен на эту роль, но я получаю исключение ProviderException на следующей строке с дополнительной информацией: "Пользователь"_username"не найден.

My Web Config на случай, если это кому-нибудь понадобится:

<roleManager enabled="true" defaultProvider="MyRoleProvider">
  <providers>
    <clear />
    <add name="MyRoleProvider" type="System.Web.Providers.DefaultRoleProvider" 
    connectionStringName="StoreFrontConnectionString" applicationName="/"/>
  </providers>
</roleManager>

Любая помощь будет принята с благодарностью.

1 ответ

Я только что обошел эту проблему сам, и, возможно, у вас та же проблема.

В моем случае мой web.config был немного не прав. Убедитесь, что параметр applicationName для вашего провайдера профиля, провайдера членства и менеджера ролей одинаков в каждом случае. У меня была опечатка в одном из них, и это означало, что пользователь, который выглядел так, как будто он был на самом деле для другого приложения, поэтому, когда я вызвал AddUserToRole, он выдал исключение.

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