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

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/19329159/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-10 14:46:03  来源:igfitidea点击:

Mvc Runtime error - The Role Manager feature has not been enabled

c#asp.net-mvcroles

提问by kayze

I am trying to implement basic role management manually. When a user logs in if they are admin or not they are added to a role

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

I am getting this error:Exception Details: System.Configuration.Provider.ProviderException: The Role Manager feature has not been enabled.

我收到此错误:异常详细信息:System.Configuration.Provider.ProviderException:尚未启用角色管理器功能。

This is the method that causes the error:

这是导致错误的方法:

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

            Roles.AddUserToRole(user, role);
        }

here is my web.config

这是我的 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>

I've seen number of answers on google including adding different role attributes in web.conf, so far no luck

我已经在 google 上看到了许多答案,包括在 web.conf 中添加不同的角色属性,到目前为止没有运气

can some one please help?

有人可以帮忙吗?

采纳答案by developer10214

By default the role manger is disabled, so you have to enable it explicitly:

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

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

回答by Spock

With your DefaultRoleProvider try this

使用您的 DefaultRoleProvider 试试这个

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

回答by AH.

I tried this in MVC 5 and it worked:

我在 MVC 5 中尝试过这个并且它有效:

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

After adding the "roleManager" line shown above to the web.config, I could add a new role and add a user to the role without any exception:

将上面显示的“roleManager”行添加到 web.config 后,我可以添加一个新角色并将用户添加到角色中,没有任何异常:

   if (!Roles.RoleExists(_role))
      Roles.CreateRole(_role);

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