承接前兩篇,本文聚焦 HttpModule 在 ASP.NET 請求管線中的角色與運作機制。HttpModule 實作 IHttpModule 介面,透過 Init(HttpApplication context) 向應用程式層級事件註冊處理函式,擁有介入完整請求生命週期的能力。
namespace System.Web
{
public interface IHttpModule
{
void Dispose();
void Init(HttpApplication context);
}
}
Init 方法接收 HttpApplication 實例(專案經理),模組(程式設計師)在其中註冊感興趣的事件,如 BeginRequest、EndRequest、AuthenticateRequest、AuthorizeRequest 等。圖示說明 HttpApplication 將豐富的事件暴露給模組註冊:

public void Init(HttpApplication context)
{
context.EndRequest += new EventHandler(context_EndRequest);
}
private void context_EndRequest(object sender, EventArgs e)
{
// 請求結束時執行的邏輯,如記錄日誌、壓縮回應等
}
FormsAuthenticationModule(表單驗證)、SessionStateModule(Session 管理)、OutputCacheModule(輸出快取)。web.config 的 <system.webServer>/<modules> 區段註冊(IIS 7+ 整合模式)。HttpModule 是 ASP.NET 擴充性的核心支柱,透過事件驅動模型實現關注點分離,讓開發者能在不修改頁面程式碼的前提下,注入橫切邏輯。掌握其註冊時機與事件順序,是建構高可維護 Web 應用的關鍵能力。