Mvc运行时错误 - 未启用角色管理器功能

5

我正在尝试手动实现基本的角色管理。当用户登录时,无论他们是管理员还是普通用户,都会被添加到一个角色中。

我遇到了以下错误:异常详情:System.Configuration.Provider.ProviderException:角色管理功能尚未启用。

导致此错误的方法如下:

 public void addUserToRole(String user, String role)
        {
            if (!Roles.RoleExists(role))
                Roles.CreateRole(role);

            Roles.AddUserToRole(user, role);
        }

这是我的web.config文件:

 <profile defaultProvider="DefaultProfileProvider">
      <providers>
        <add name="DefaultProfileProvider" type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxxxxx" connectionStringName="DefaultConnection" applicationName="/" />
      </providers>
    </profile>
    <membership defaultProvider="DefaultMembershipProvider">
      <providers>
        <add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxxx" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
      </providers>
    </membership>
    <roleManager defaultProvider="DefaultRoleProvider">
      <providers>
        <add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxxxx" connectionStringName="DefaultConnection" applicationName="/" />
      </providers>
    </roleManager>
    <sessionState mode="InProc" customProvider="DefaultSessionProvider">
      <providers>
        <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxx" connectionStringName="DefaultConnection" />
      </providers>
    </sessionState>

我在Google上看到了许多答案,包括在web.conf中添加不同的角色属性,但是到目前为止都没有成功。请问有人能帮忙吗?
3个回答

6

默认情况下,角色管理器是被禁用的,因此您必须显式地启用它:

<roleManager enabled="true" defaultProvider="DefaultRoleProvider">

5
然后我只是收到了“找不到默认角色提供程序”的错误提示。(MVC 5) - Jason Kleban
如果你在MVC 4项目中遇到这个问题,可以尝试一下这个答案。我在将整个代码块复制粘贴后,问题得到了解决。 - ourmandave

6

我在MVC 5中尝试过这个方法,它有效:

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

在将上述“roleManager”行添加到web.config后,我可以添加新角色并向角色添加用户,而不会出现任何异常:
   if (!Roles.RoleExists(_role))
      Roles.CreateRole(_role);

   if (!Roles.IsUserInRole(_username, _role))
      Roles.AddUserToRole(_username, _role);

是的,这是正确的。实际上,OWIN 处理身份验证,所以不用担心没有表单身份验证了。 - yardpenalty.com
我需要在我的当前项目中的roleManager元素中添加enabled="true"子句 - 但是我检查了我的以前的项目,那里没有这个子句。真是让人费解。 - Codes with Hammer
1
我收到了错误信息:无法连接到 SQL Server 数据库。 - Bashar Abu Shamaa

1
使用您的DefaultRoleProvider,请尝试这样做。
   <roleManager defaultProvider="DefaultRoleProvider" enabled ="true">

DefaultRoleProvider不存在! - Bashar Abu Shamaa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接