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

时间:2013-10-12 00:29:37

标签: c# asp.net-mvc roles

我正在尝试手动实施基本角色管理。当用户登录时,如果他们是管理员,则会将其添加到角色

我收到此错误:异常详细信息: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 个答案:

答案 0 :(得分:6)

默认情况下,角色管理器已禁用,您是否必须明确启用它:

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

答案 1 :(得分: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);

答案 2 :(得分:1)

使用DefaultRoleProvider试试这个

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