【问题标题】:AspNet Role provider kicking in and it shouldn't beAspNet 角色提供者开始介入,它不应该是
【发布时间】:2012-08-24 21:12:53
【问题描述】:

我收到此错误:

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?

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    修复

    将带有值false 应用设置的enableSimpleMembership 添加到您的web.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”,您可以使用value="false" (web.config) 添加应用设置enableSimpleMembership

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

    这将阻止 webmatrix 重新配置 RoleManager

    【讨论】:

      【解决方案2】:

      &lt;clear/&gt; 添加到您的 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

      【讨论】:

      • 是的,试过了,抱歉 - 清除所有角色提供者会抱怨没有默认角色提供者,或者默认角色提供者不可用
      • @Paul:已编辑,尝试删除。
      • 不,我的意思是您根本无法删除它:解析器错误消息:找不到默认角色提供者。
      • @Paul:下一次尝试,禁用默认角色提供者(请参阅我的编辑)。
      • @Paul:对不起,那我恐怕我的想法已经用完了。
      猜你喜欢
      • 2015-04-11
      • 2023-03-14
      • 1970-01-01
      • 2011-02-17
      • 1970-01-01
      • 1970-01-01
      • 2016-09-05
      • 2012-04-08
      • 2013-10-21
      相关资源
      最近更新 更多