ASP.NET MVC 异常“角色管理器功能尚未启用”
Posted
技术标签:
【中文标题】ASP.NET MVC 异常“角色管理器功能尚未启用”【英文标题】:ASP.NET MVC Exception 'The Role Manager feature has not been enabled' 【发布时间】:2019-04-21 12:48:13 【问题描述】:我正在尝试制作一个 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();
我查看了在 Web.config 中启用 roleManager 的位置,但找不到它,如果我在 system.web 部分下添加它,它就不起作用
编辑:在以下代码中添加 (>roleManager enabled="true"
<system.web>
<authentication mode="None"/>
<compilation debug="true" targetFramework="4.7"/>
<httpRuntime targetFramework="4.7"/>
</system.web>
我想我可能只是缺少一个依赖项或一些初始化程序,但没有任何线索,并且类似问题中的其他解决方案都没有工作。
【问题讨论】:
更新:目前,我找到了一种解决方法。通过使用“this.User.IsInRole("SuperAdmin")”,我得到了一个有效的返回值。但是上面的问题还是不行。 【参考方案1】:您可以通过读取布尔属性来做到这一点:
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
【讨论】:
正如我在上面的评论中所说,我已经尝试过了,但它不起作用。编译和运行需要一些时间,然后最终抛出另一个异常: System.Web.HttpException: 'Unable to connect to SQL Server database.' 您是否验证了您的 SQL 连接字符串。您是否能够连接到 SQL Server 数据库? 让我们这样说吧,在我尝试访问 roleManager 之前一切正常,并且根据您建议的修复,我必须重新创建并重新连接到数据库......这不太有意义,但感谢您的提示以上是关于ASP.NET MVC 异常“角色管理器功能尚未启用”的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET 5 MVC 6 RC1 API 中的自定义模型绑定异常
ASP.NET MVC 控制器不会从 LINQ lambda 捕获异常