1

次のように構成された Web サイトがあります。

<roleManager enabled='false'></roleManager>

しかし、パイプラインで roleManager が実行されていることはまだわかります (トレースを調べると、roleManager が machine.config で構成された SQL プロバイダーからロールを読み込もうとすると例外が発生します)。

roleManager を無効にするにはどうすればよいですか?

4

2 に答える 2

4

修理

値が false の enableSimpleMembership をアプリ設定として web.config に追加します。

原因

<roleManager enabled="false" />

Roles.Enabled予想どおり、フラグが false に設定されます。

しかし、次のWebMatrix.WebData.WebSecurityように書かれています。

internal static void PreAppStartInit()
{
  if (!ConfigUtil.SimpleMembershipEnabled)
    return;
  ...
  Roles.Enabled = true;
  ...
}

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

無効にするには、 (web.config)でアプリ設定をSimpleMembership追加できます:enableSimpleMembershipvalue="false"

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

これにより、webmatrix が RoleManager を有効にすることができなくなります。

別の解決策 (ハック) は、モジュールのリストから RoleManager モジュールを削除することです。

....
<system.webServer>
    <modules>
        <remove name="RoleManager"/>
    </modules>
....
于 2013-04-13T14:48:47.037 に答える
0

いいえ... enableSimpleMembership = falseを使用しても、ダミーのRoleProviderを実装する必要があります。そうしないと、「ロールマネージャー機能が有効になっていません」という例外が発生します。

ダミーの RoleProvider を実装する方法は次のとおりです。

SimpleMembership でロール プロバイダーのみをオフにする

于 2014-03-14T00:29:00.120 に答える