静态内容的 IIS7 集成模式中具有角色的 ASP.NET 身份验证

标签 asp.net iis-7 integrated-pipeline-mode

我正在试验 IIS7 中静态内容的集成身份验证模式。我按照本文中的说明进行操作:https://web.archive.org/web/20210612113955/https://aspnet.4guysfromrolla.com/articles/122408-1.aspx 如果我通过登录状态允许/拒绝访问(如文章中所述),它工作正常。但是我想允许/拒绝基于角色的访问(使用角色提供程序中内置的 ASP.NET)。当我在 web.config 中为角色“Admin”设置允许规则并为所有其他用户设置拒绝规则时,即使我以管理员身份登录,我也无法访问静态文件。同一文件夹包含非静态内容(aspx 页面),可以根据角色提供者信息很好地访问这些内容。

有什么想法吗?

最佳答案

尝试将以下内容添加到您的 <system.webServer> <modules> block :

<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 查看默认 IIS 配置(至少,那是我的 Windows Vista 机器上的过去)查看模块加载的顺序(注意默认情况下使用 managedHandler 将 RoleManager 限制为非静态内容),MSDN 涵盖了 RoleManagerModuleSystem.Web.Security 中的其余模块一起命名空间,因此您可能会在那里找到所需的内容。

关于静态内容的 IIS7 集成模式中具有角色的 ASP.NET 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/991045/

相关文章:

asp.net - RequiredFieldValidator CSS 改变了除了字体大小之外的一切

c# - "Lazy"MVC5 Razor 执行 - ASP.NET(优化)

iis-7 - 为什么 Web Deploy Agent Service 监听 80 和 8172 端口

iis - 处理程序在 IIS7.5 集成管道上返回 404 错误

c# - 避免对静态文件的 404 请求进行集成管道身份验证

asp.net - jQuery 1.2.6 的 Visual Studio jscript 智能感知错误?

c# - 在 ASP.NET 中调用使用签名(例如)Func<t,t> 类型定义的委托(delegate)是否同步执行?

asp.net-mvc-3 - ELMAH 应用程序名称 : show exceptions logged by another site

iis-7 - 反向代理 (ARR) 和 ScriptResource.axd 问题

iis-7.5 - 使用集成管道模拟域用户