我正在尝试制作一个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();
ive寻找了在Web.config中启用roleManager的位置,但是找不到它,而且如果我在system.web部分下添加它,它也无法正常工作
编辑:在使用IsUserInRole时,将(> roleManager enabled =“ true” <)添加到以下代码中会产生另一个未处理的异常:“ System.Web.HttpException:无法连接到SQL Server数据库。”
<system.web>
<authentication mode="None"/>
<compilation debug="true" targetFramework="4.7"/>
<httpRuntime targetFramework="4.7"/>
</system.web>
我认为我可能只是缺少一个依赖项或一些诱因,但没有任何线索,类似问题中的其他解决方案也没有奏效。
答案 0 :(得分:0)
您可以通过从以下boolean属性中读取内容来实现:
System.Web.Security.Roles.Enabled 这是从web.config中的roleManager元素的enabled属性直接读取的:
<configuration>
<system.web>
<roleManager enabled="true" />
</system.web>
</configuration>
有关更多信息,请查看以下MSDN示例:https://msdn.microsoft.com/en-us/library/aa354509(v=vs.110).aspx