次のように構成された Web サイトがあります。
<roleManager enabled='false'></roleManager>
しかし、パイプラインで roleManager が実行されていることはまだわかります (トレースを調べると、roleManager が machine.config で構成された SQL プロバイダーからロールを読み込もうとすると例外が発生します)。
roleManager を無効にするにはどうすればよいですか?
次のように構成された Web サイトがあります。
<roleManager enabled='false'></roleManager>
しかし、パイプラインで roleManager が実行されていることはまだわかります (トレースを調べると、roleManager が machine.config で構成された SQL プロバイダーからロールを読み込もうとすると例外が発生します)。
roleManager を無効にするにはどうすればよいですか?
修理
値が 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
追加できます:enableSimpleMembership
value="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>
....
いいえ... enableSimpleMembership = falseを使用しても、ダミーのRoleProviderを実装する必要があります。そうしないと、「ロールマネージャー機能が有効になっていません」という例外が発生します。
ダミーの RoleProvider を実装する方法は次のとおりです。