2012-08-24 41 views
2

我得到這個錯誤:ASPNET角色提供商踢,它不應該是

Line 246:  <roleManager> 
Line 247:   <providers> 
Line 248:    <add name="AspNetSqlRoleProvider"  connectionStringName="LocalSqlServer" applicationName="/" type="System.Web.Security.SqlRoleProvider, System.Web, Version=4.0.0.0, Culture=neutral,  PublicKeyToken=b03f5f7f11d50a3a"/> 
Line 249:    <add name="AspNetWindowsTokenRoleProvider" applicationName="/" type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> 
Line 250:   </providers> 

Source File: C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config Line: 248 

然而,正如我們不使用aspnetroleprovider它不應該是。但它在machine.config中。其他網站沒有這個問題。有什麼可以讓它拿起aspnetsqlroleprovider?

回答

1

<clear/>添加到您的web.config的角色提供者部分。這樣你就可以避免繼承,如果你不使用它。您應該爲MembershipProfile供應商部分添加它。

<roleManager> 
    <providers> 
     <clear/> 
    </providers> 
    .... 

編輯:也許你需要明確地將其刪除:

<roleManager> 
     <providers> 
      <clear/> 
      <remove name="AspNetSqlRoleProvider" /> 

闖闖:

禁用角色提供:

<system.web> 
    <roleManager enabled="false" /> 
</system.web> 

http://msdn.microsoft.com/en-us/library/ms998314.aspx#paght000013_step2

+1

是的,試圖說對不起 - 清除所有角色提供商使得它沒有成爲默認角色提供者,或默認角色提供者不可用 – Paul

+0

@Paul:編輯,嘗試刪除它。 –

+0

不,我的意思是你根本無法刪除它:解析器錯誤信息:默認角色提供程序找不到。 – Paul

6

修復

與價值false應用程序設置添加enableSimpleMembershipweb.config

原因

<roleManager enabled="false" /> 

會導致Roles.Enabled標誌被設置爲false,符合市場預期,

有 'WebMatrix.WebData.WebSecurity',說:

internal static void PreAppStartInit() 
{ 
    if (!ConfigUtil.SimpleMembershipEnabled) 
    return; 
    ... 
    Roles.Enabled = true; 
    const string BuiltInRolesProviderName = "AspNetSqlRoleProvider"; 
    var builtInRoles = Roles.Providers[BuiltInRolesProviderName]; 
    if (builtInRoles != null) 
    { 
     var simpleRoles = CreateDefaultSimpleRoleProvider(BuiltInRolesProviderName, currentDefault: builtInRoles); 
     Roles.Providers.Remove(BuiltInRolesProviderName); 
     Roles.Providers.Add(simpleRoles); 
    } 
    ... 
} 

這將覆蓋roleManager設置(之前RoleManager模塊是執行該代碼),包括添加AspNetSqlRoleProvider

禁用 'SimpleMembership' 可以添加應用程序設置enableSimpleMembershipvalue="false"(web.config中):

<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"> 
    <appSettings> 
     <add key="enableSimpleMembership" value="false" /> 
    </appSettings> 
</configuration> 

這將阻止webmatrix重新配置RoleManager