【问题标题】:Mvc Runtime error - The Role Manager feature has not been enabledMvc 运行时错误 - 角色管理器功能尚未启用
【发布时间】:2013-10-20 04:25:19
【问题描述】:

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

我收到此错误:异常详细信息: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 中添加不同的角色属性,到目前为止还没有运气

有人可以帮忙吗?

【问题讨论】:

    标签: c# asp.net-mvc roles


    【解决方案1】:

    默认情况下角色管理器是禁用的,所以你必须明确地启用它:

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

    【讨论】:

    • 然后我得到Default Role Provider could not be found。 (MVC 5)
    • 如果你在 MVC 4 项目中遇到这个问题,试试这个answer。在我剪切并粘贴整个块后为我工作。
    【解决方案2】:

    用你的 DefaultRoleProvider 试试这个

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

    【讨论】:

    • DefaultRoleProvider 不存在!
    【解决方案3】:

    我在 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 会处理身份验证,所以不用担心不再有表单身份验证。
    • 我需要在我当前的项目中将enabled="true" 子句添加到我的roleManager 元素中——但我检查了我以前的项目,并且没有这个子句。去图吧。
    • 我收到错误:无法连接到 SQL Server 数据库。
    猜你喜欢
    • 1970-01-01
    • 2011-04-21
    • 2019-04-21
    • 1970-01-01
    • 2014-05-10
    • 2013-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多