使用 ASP.NET MVC3,如何讓 IIS 在區分大小寫的路由上不重定向 302?
使用 ASP.NET MVC3,如何讓 IIS 在區分大小寫的路由上不重定向 302?
例如,我在 IIS 中的站點下創建了一個名為“Admin”的應用程序文件夾。javascript(有數百個文件,沒有微不足道的更改,然後當生成或編寫新程式碼時,我們必須在所有路由上手動強制執行大小寫?我認為這太過分了)和一些手寫連結都指向
/admin/ControllerName/
或/admin/controllername/
已經指向,所以當 IIS 看到這一點時,它會向/Admin/ControllerName/
. 顯然(我測試確認)只是改變案例可以防止 302。每個圖像、javascript 包含等都會對 IIS 造成兩次點擊。
我怎樣才能減少流量,讓 IIS 繼續並重新路由我而不區分大小寫,這樣我們就可以停止所有愚蠢的 302。或者這是不可能的,我應該在我們編寫的所有程式碼中永遠強制執行每個潛在的 URL?還是我只需要接受它並與302一起生活?
我猜你正在使用 WS-Federation?或者至少使用 WSFederationAuthenticationModule 和/或 SessionAuthenticationModule?這兩個模組都會執行重定向以匹配應用程序的大小寫,因為它在 IIS 中的任何時候它們都無法對您進行身份驗證或驗證您是否有權獲取所請求的資源。我看不出有任何方法可以阻止它這樣做,即使可以,您也可能無法使用
/admin
.這樣做的原因是 cookie 中列出的路徑區分大小寫,並且由於與 WS-Federation 相關的所有內容都是通過 cookie 完成的,因此大小寫必須匹配。如果創建了顯示您已通過身份驗證的 cookie,
/Admin
然後您嘗試訪問/admin
,它會認為您未通過身份驗證。一種可能的解決方法是將管理目錄設置為 IIS 中的單獨應用程序,並將其配置為不使用 FAM 或 SAM。但是,根據目錄的名稱,我猜這對您來說不是一個可行的選擇,因為您將失去對該目錄的身份驗證。