Asp.net
IIS URL 重寫與 URL 路由
我打算為 Web 窗體應用程序使用 url 路由。但是,在閱讀了一些文章之後,我不確定這是否是一種簡單的方法。
將URL 重寫模組用於 Web 表單會更好嗎?但是,它僅適用於 IIS7。最初,有人認為 URL 路由與 Asp.Net MVC 完全分離,它可以用於 Web 表單。
很想听聽任何建議..
這裡有一篇很棒的文章,關於 IIS 團隊成員的兩者之間的差異。
我建議的一個警告是,對於 WebForms,在使用路由時需要小心。我編寫了一個範例實現,說明如何使用WebForms 路由來解決這些問題,並希望有助於回答您的問題。
這是我找到的關於該主題的最佳文章: Ruslan Yakushev 的IIS URL 重寫和 ASP.NET 路由。
IIS URL 重寫
當客戶端針對特定 URL 向 Web 伺服器發出請求時,URL 重寫組件會分析請求的 URL 並將其更改為同一伺服器上的另一個不同 URL。URL 重寫組件在請求處理管道的早期執行,因此能夠在 Web 伺服器決定使用哪個處理程序來處理請求之前修改請求的 URL。
ASP.NET 路由
ASP.NET 路由作為託管程式碼模組實現,該模組在解析記憶體階段(PostResolveRequestCache 事件)和映射處理程序階段(PostMapRequestHandler)插入 IIS 請求處理管道。ASP.NET 路由配置為針對對 Web 應用程序發出的所有請求執行。
URL重寫和ASP.NET路由的區別:
- URL 重寫用於在 Web 伺服器處理請求之前操縱 URL 路徑。URL 重寫模組不知道什麼處理程序最終將處理重寫的 URL。此外,實際的請求處理程序可能不知道 URL 已被重寫。
- ASP.NET 路由用於根據請求的 URL 路徑將請求分派給處理程序。與 URL 重寫相反,路由組件知道處理程序並選擇應該為請求的 URL 生成響應的處理程序。您可以將 ASP.NET 路由視為一種高級處理程序映射機制。
除了這些概念上的差異之外,IIS URL 重寫和 ASP.NET 路由之間還有一些功能差異:
- IIS URL 重寫模組可用於任何類型的 Web 應用程序,包括 ASP.NET、PHP、ASP 和靜態文件。ASP.NET 路由只能用於基於 .NET Framework 的 Web 應用程序。
- 無論應用程序池使用集成還是經典 IIS 管道模式,IIS URL 重寫模組的工作方式都相同。對於 ASP.NET 路由,最好使用集成管道模式。ASP.NET 路由可以在經典模式下工作,但在這種情況下,應用程序 URL 必須包含文件副檔名,或者必須將應用程序配置為在 IIS 中使用“*”處理程序映射。
- URL-rewrite 模組可以根據域名、HTTP 標頭和伺服器變數做出重寫決策。預設情況下,ASP.NET 路由僅適用於 URL 路徑和 HTTP-Method 標頭。
- 除了重寫之外,URL-rewrite 模組還可以執行 HTTP 重定向、發出自定義狀態程式碼和中止請求。ASP.NET 路由不執行這些任務。
- URL-rewrite 模組在其目前版本中不可擴展。ASP.NET 路由是完全可擴展和可定制的。

