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