尝试将以下内容添加到您的<system.webServer> <modules>
块中:
<configuration>
<system.webServer>
<modules>
<remove name="FormsAuthentication" />
<add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" />
<remove name="UrlAuthorization" />
<add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" />
<remove name="DefaultAuthentication" />
<add name="DefaultAuthentication" type="System.Web.Security.DefaultAuthenticationModule" />
<remove name="RoleManager" />
<add name="RoleManager" type="System.Web.Security.RoleManagerModule" />
</modules>
</system.webServer>
</configuration>
这RoleManager
一点很关键,它不包含在我能找到的任何在线示例中。否则,用户的角色成员资格不会针对静态内容进行初始化,因此基于角色的授权将始终失败。
(免责声明:根据我对 IIS 的有限理解,我自己拼凑了这个,但它似乎有效。)
编辑(回应您的评论):对不起,我不太了解 RoleManager 如何依赖其他模块。您可以通过查看c:\Windows\System32\inetsrv\config\applicationHost.config
(至少,这是我的 Windows Vista 机器上的过去)来查看默认的 IIS 配置,以查看加载模块的顺序(注意默认使用managedHandler将 RoleManager限制为非静态内容),并且 MSDN 涵盖RoleManagerModule以及System.Web.Security命名空间中的其余模块,因此您可能会在那里找到您需要的东西。