ASP.NET MVC Exception «Функция Role Manager не была включена» - PullRequest
0 голосов
/ 19 ноября 2018

Я пытаюсь сделать сайт ASP.net MVC. Я настроил роли в файле Startup.cs следующим образом:

    private void CreateRolesAndUsers()
    {
        ApplicationDbContext context = new ApplicationDbContext();
        var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(context));
        var UserManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(context));

        if (!roleManager.RoleExists("SuperAdmin"))
        {
            // first we create Admin role   
            var role = new Microsoft.AspNet.Identity.EntityFramework.IdentityRole();
            role.Name = "SuperAdmin";
            roleManager.Create(role);
            //Here we create a Admin super user who will maintain the website
            var user = new ApplicationUser();
            user.UserName = "SuperAdmin";
            user.Email = "SuperAdmin@SU.com";

            string userPWD = "Password1";

            var chkUser = UserManager.Create(user, userPWD);
            //Add default User to Role Admin   

            if (chkUser.Succeeded)
            {
                var result1 = UserManager.AddToRole(user.Id, "SuperAdmin");
            }
        }
    }

Я убедился, что приведенный выше код успешно добавляет роли в базу данных, и впервые заметил, что роли не работают, когда я попробовал Roles.IsUserInRole (User.Identity.Name, "SuperAdmin") *

Я пытаюсь контролировать, какие роли видят определенный контент в представлении, и получаю исключение:

System.Configuration.Provider.ProviderException: «Функция диспетчера ролей не включена.»

когда я пытаюсь вызвать следующую строку в файле .cshtml: @ Roles.GetRolesForUser ();

Я посмотрел, где включить roleManager в Web.config, но не могу найти его, и он не работает, если я добавлю его в раздел system.web

РЕДАКТИРОВАТЬ: добавление (> roleManager enabled = "true" <) в следующий код создает другое необработанное исключение при использовании IsUserInRole: "System.Web.HttpException: Невозможно подключиться к базе данных SQL Server." </p>

<system.web>
    <authentication mode="None"/>
    <compilation debug="true" targetFramework="4.7"/>
    <httpRuntime targetFramework="4.7"/>
</system.web>

Я думаю, что я, возможно, просто упускаю зависимость или какой-то инициализатор, но не имею понятия, и ни одно из других решений в подобных вопросах не сработало.

1 Ответ

0 голосов
/ 19 ноября 2018

Вы можете сделать это, прочитав логическое свойство по адресу:

System.Web.Security.Roles.Enabled Это прямое чтение из атрибута enabled элемента roleManager в файле web.config:

<configuration>
  <system.web>
    <roleManager enabled="true" />
  </system.web>
</configuration>

Для получения дополнительной информации, проверьте этот образец MSDN: https://msdn.microsoft.com/en-us/library/aa354509(v=vs.110).aspx

...