2

我收到此错误:

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?

4

2 回答 2

6

使固定

enableSimpleMembership价值false应用设置添加到您的web.config.

原因

<roleManager enabled="false" />

将导致Roles.Enabledflag 设置为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”,您可以enableSimpleMembership使用value="false"(web.config) 添加应用设置:

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

这将阻止 webmatrix 重新配置RoleManager

于 2013-04-13T15:28:39.700 回答
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

于 2012-08-24T21:30:12.713 回答