客戶端請求 URL → IIS 管線早期 (Pre-begin/Begin Request) → Rewrite Module 依規則比對正則 → 修改內部 URL → 後續處理器依新 URL 執行。瀏覽器不知重寫細節,以為回應來自原始 URL。
Routing 非修改 URL,而是將 URL 對應至 IHttpHandler。UrlRoutingModule 在 PostResolveRequestCache 階段匹配路由,建立 RequestContext,取得 RouteHandler 產生 Handler,最後 RewritePath("~/UrlRouting.axd") 讓管線執行該 Handler。
| 特性 | URL Rewriting | ASP.NET Routing |
|---|---|---|
| 管線階段 | 極早期 (Pre-begin) | PostResolveRequestCache |
| 作用對象 | 修改請求 URL 字串 | 對應至 Handler 物件 |
| 適用範圍 | 所有 HTTP 請求 (含靜態檔) | 僅 ASP.NET 處理的請求 |
| 雙向支援 | 僅輸入重寫 | 輸入匹配 + 輸出產生 URL |