在 ASP.NET/IIS 7 应用程序中删除特定路径的 HttpModule?

在 ASP.NET/IIS 7 应用程序中删除特定路径的 HttpModule?

最简洁地说,我的问题是,在 IIS 7 集成模式下运行的 ASP.NET 4.0 应用程序是否应该能够遵守我的 Web.config 文件的这一部分:

  <location path="auth/windows">
    <system.webServer>
      <modules>
        <remove name="FormsAuthentication"/>
      </modules>
    </system.webServer>
  </location>

我正在尝试混合模式身份验证(Windows 和 Forms)。使用 IIS 管理器,我已禁用对 auth/windows/winauth.aspx 的匿名身份验证,该身份验证位于上述位置路径内。我已设置失败请求跟踪来跟踪各种 HTTP 状态代码,包括 302。

当我请求 winauth.aspx 页面时,会返回 302 HTTP 状态代码。如果我查看请求跟踪,我可以看到 AnonymousAuthenticationModule 最初生成了 401(未授权)。但是,FormsAuthenticationModule 会将其转换为浏览器看到的 302。因此,似乎我尝试从该路径中的页面管道中删除该模块的尝试没有奏效。但我没有在任何地方看到任何投诉(事件查看器、死亡黄页等)表明这是无效配置。我希望将 401 返回给浏览器,其中可能包含适当的 WWW-Authenticate 标头。

其他几点:a)<authentication mode="Forms">我的Web.config中确实有,这就是302重定向到的内容;b)我从inetserv \ config \ applicationHost.config文件中获得了我试图删除的模块的“名称”;c)我的Web.config文件中有这个元素:<modules runAllManagedModulesForAllRequests="false">;d)我尝试了一个<location>元素作为路径,在该元素中我将身份验证模式设置为“无”,但这给出了一个黄色异常页面,提示该属性不能在应用程序级别以下设置。

有人能用这种方式成功删除模块吗?

相关内容