HTTP 模塊是一個通過實現實現 IHttpModule 接口和處理事件,在每次針對應用程序發出請求時調用的程序集。HTTP 模塊作為 ASP.NET 請求管線的一部分調用,能夠在整個請求過程中訪問生命周期事件。因此,HTTP 模塊使我們有機會檢查傳入和傳出的請求,並根據該請求采取操作。甚至我們可以通過實現HTTP模塊來參與ASP.NET運行的管理,例如,ASP.NET 提供了 SessionStateModule 來向應用程序提供會話狀態服務。
好了,在使用HTTP模塊之前,先讓我們回顧一下一次請求的生命周期事件:
在這裡特別提到一點,HTTP 模塊不同於 HTTP 處理程序。對於所有的請求和響應都可調用 HTTP 模塊,而 HTTP 處理程序僅在響應特定的請求時才運行。
HTTP 模塊典型的用法包括:
l 安全性。因為您可以檢查傳入的請求,所以 HTTP 模塊可以在請求頁、XML Web services 或調用處理程序之前執行自定義的身份驗證或其他安全檢查。
l 統計信息和日志記錄。因為 HTTP 模塊是在每次請求時調用的,所以,您可以將請求統計信息和日志記錄信息收集到一個集中的模塊中,而不是收集到各頁中。
l 自定義的頁眉或頁腳。因為您可以修改出站響應,所以可以在每一個頁面或 XML Web services 響應中注入內容,如自定義的標頭信息。
ASP.NET HTTP 模塊針對所有的請求運行,這與 ISAPI 篩選器類似。但是它們是用托管代碼編寫的,而且可以與 ASP.NET 應用程序的生命周期完全集成。編寫 ASP.NET HttpModule 的一般過程為:
l 實現 IHttpModule 接口。
l 處理 Init 方法並為所需事件進行注冊。
l 處理該事件。
l 如果必須進行清理,還可根據需要實現 Dispose 方法。
l 在 Web.config 中注冊該模塊。