1

我有一个网站,其中配置有:

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

但是我仍然可以看到 roleManager 在管道中执行(通过查看跟踪,当 roleManager 尝试从 machine.config 中配置的 SQL 提供程序加载角色时,我也遇到了异常)

如何禁用角色管理器?

4

2 回答 2

4

使固定

将值为 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添加应用设置:enableSimpleMembershipvalue="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>
....
于 2013-04-13T14:48:47.037 回答
0

不...我认为它不正确,即使 enableSimpleMembership=false,您仍然需要实现一个 Dummy RoleProvider,否则,异常“角色管理器功能尚未启用”。

下面是如何实现一个虚拟 RoleProvider:

仅关闭 SimpleMembership 中的角色提供程序

于 2014-03-14T00:29:00.120 回答