刪除 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 和表單)。使用 IIS 管理器,我已停用 auth/windows/winauth.aspx 的匿名身份驗證,該驗證位於上面的位置路徑內。我設定了失敗請求追蹤來追蹤各種 HTTP 狀態碼,包括 302。

當我請求 winauth.aspx 頁面時,返回 302 HTTP 狀態碼。如果我查看請求跟踪,我可以看到 401(未經授權)最初是由 AnonymousAuthenticationModule 生成的。但是,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>將身份驗證模式設為「無」的路徑元素,但這給了一個黃色異常頁面,表明該屬性無法設定在應用程式層級以下。

有人有幸以這種方式刪除模組嗎?

相關內容