2013-10-12 34 views
4

我試圖手動實現基本角色管理。當用戶登錄時,如果他們是管理員或不是他們被添加到角色Mvc運行時錯誤 - 角色管理器功能尚未啓用

我得到此錯誤:異常詳細信息: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> 

我已經看到了谷歌的答案,包括添加不同的角色在網絡屬性的數量.conf,到目前爲止沒有運氣

有人可以幫忙嗎?

回答

6

默認情況下,角色管理器被禁用,所以你必須明確地啓用它:

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

然後我只是'默認角色提供程序找不到'。 (MVC 5) –

+0

如果您在MVC 4項目中遇到此問題,請嘗試此[答案](http://stackoverflow.com/a/17980288/3585500)。在我剪切完整塊之後爲我工作。 – ourmandave

1

與您DefaultRoleProvider試試這個

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

DefaultRoleProvider不存在! –

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); 
+0

+1這對我最合適。 –

+0

是的,這是正確的。實際上,OWIN處理認證,因此不用擔心沒有表單認證。 – yardpenalty

+0

我需要在當前項目中爲我的'roleManager'元素添加'enabled ='true''子句 - 但是我檢查了我以前的項目,但沒有這個子句。去搞清楚。 –

相關問題