我有一个网站,其中配置有:
<roleManager enabled='false'></roleManager>
但是我仍然可以看到 roleManager 在管道中执行(通过查看跟踪,当 roleManager 尝试从 machine.config 中配置的 SQL 提供程序加载角色时,我也遇到了异常)
如何禁用角色管理器?
我有一个网站,其中配置有:
<roleManager enabled='false'></roleManager>
但是我仍然可以看到 roleManager 在管道中执行(通过查看跟踪,当 roleManager 尝试从 machine.config 中配置的 SQL 提供程序加载角色时,我也遇到了异常)
如何禁用角色管理器?
使固定
将值为 false app 设置的 enableSimpleMembership 添加到您的 web.config。
原因
<roleManager enabled="false" />
将导致Roles.Enabled
标志设置为假,如预期的那样,
但有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。
另一种解决方案(hack)是从模块列表中删除 RoleManager 模块:
....
<system.webServer>
<modules>
<remove name="RoleManager"/>
</modules>
....
不...我认为它不正确,即使 enableSimpleMembership=false,您仍然需要实现一个 Dummy RoleProvider,否则,异常“角色管理器功能尚未启用”。
下面是如何实现一个虚拟 RoleProvider: