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.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);
  }
  ...
}

これは、AspNetSqlRoleProvider の追加を含め、roleManager 設定をオーバーライドします (このコードは RoleManager モジュールの前に実行されます)。

「SimpleMembership」を無効にするには、 (web.config)でアプリ設定enableSimpleMembershipを追加できます。value="false"

<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のセクションにを追加します。このようにして、継承を使用しない場合は継承を回避します。MembershipおよびProfileプロバイダーセクションにも追加する必要があります。

<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 に答える