Asp.net

IIS URL 重寫與 URL 路由

  • September 18, 2008

我打算為 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。

IIS URL 重寫

ASP.NET 路由

ASP.NET 路由作為託管程式碼模組實現,該模組在解析記憶體階段(PostResolveRequestCache 事件)和映射處理程序階段(PostMapRequestHandler)插入 IIS 請求處理管道。ASP.NET 路由配置為針對對 Web 應用程序發出的所有請求執行。

IIS URL 路由

URL重寫和ASP.NET路由的區別:

  1. URL 重寫用於在 Web 伺服器處理請求之前操縱 URL 路徑。URL 重寫模組不知道什麼處理程序最終將處理重寫的 URL。此外,實際的請求處理程序可能不知道 URL 已被重寫。
  2. ASP.NET 路由用於根據請求的 URL 路徑將請求分派給處理程序。與 URL 重寫相反,路由組件知道處理程序並選擇應該為請求的 URL 生成響應的處理程序。您可以將 ASP.NET 路由視為一種高級處理程序映射機制。

除了這些概念上的差異之外,IIS URL 重寫和 ASP.NET 路由之間還有一些功能差異:

  1. IIS URL 重寫模組可用於任何類型的 Web 應用程序,包括 ASP.NET、PHP、ASP 和靜態文件。ASP.NET 路由只能用於基於 .NET Framework 的 Web 應用程序。
  2. 無論應用程序池使用集成還是經典 IIS 管道模式,IIS URL 重寫模組的工作方式都相同。對於 ASP.NET 路由,最好使用集成管道模式。ASP.NET 路由可以在經典模式下工作,但在這種情況下,應用程序 URL 必須包含文件副檔名,或者必須將應用程序配置為在 IIS 中使用“*”處理程序映射。
  3. URL-rewrite 模組可以根據域名、HTTP 標頭和伺服器變數做出重寫決策。預設情況下,ASP.NET 路由僅適用於 URL 路徑和 HTTP-Method 標頭。
  4. 除了重寫之外,URL-rewrite 模組還可以執行 HTTP 重定向、發出自定義狀態程式碼和中止請求。ASP.NET 路由不執行這些任務。
  5. URL-rewrite 模組在其目前版本中不可擴展。ASP.NET 路由是完全可擴展和可定制的。

引用自:https://stackoverflow.com/questions/90112