當乙個
請求到達
時,整個
asp.net framework
系統還並沒有對這個
請求做任何處理,也就是說此時對於
請求來講,
是乙個http
請求的「必經之路」,所以可以在這個
請求傳遞到真正的請求處理中心(
)之前附加一些需要的資訊在這個
請求資訊之上,或者針對截獲的這個
請求資訊作一些額外的工作,或者在某些情況下乾脆終止滿足一些條件的
請求,從而可以起到乙個
filter
過濾器的作用。示例1
成員public
void dispose()
{}public
#endregion}}
在web.config
進行如下配置
深入了解httpmodule
乙個http
請求在httpmodule
容器的傳遞過程中,會在某一時刻(
resolverequestcache
事件)將這個
請求傳遞給
容器。在這個事件之後,
容器會建立乙個
的入口例項,但是此時並沒有將
請求控制權交出,而是繼續觸發
acquirerequeststate
事件以及
prerequesthandlerexcute
事件。在
prerequesthandlerexcute
事件之後,
視窗就會將控制權暫時交給
容器,以便進行真正的
請求處理工作。
而在httphandler
容器內部會執行
processrequest
方法來處理
請求。在容器
處理完畢整個
請求之後,會將控制權交還給
則會繼續對處理完畢的
請求資訊流進行層層的轉交動作,直到返回到客戶端為止。
圖1:httpmodule
生命週期示意圖標例2
:驗證httpmodule
生命週期
多個自定義的http module的運作
從執行結果可以看到,在
web.config
檔案中引入自定義
的順序就決定了多個自定義
在處理乙個
請求的接管順序。注:系統預設那幾個
是最先衩
asp.net framework
所載入上去的。示例3
:(**類同示例2)
在httpmodule中終止此次的http請求
可以利用
通過呼叫
方法實現當滿足某乙個條件時終止此次的
請求。需要注意的是,即使呼叫了
方法終止了乙個
請求,asp.net framework
仍然會觸發
後面的這
3個事件:
endrequest
事件、presendrequestheaders
事件、presendrequestcontent
事件。如果存在多個自定義的
的話,當
module1
終止了乙個
請求,這個
請求將不會再觸發
module2
中相應的事件了,但
module2
的最後三個事件仍會被觸發。示例4
參考資料
《asp.net
深入解析》
《asp.net
實用全書》
HttpModule工作機制
httpmodule是如何工作的 當乙個http 請求到達 時,整個 asp.net framework 系統還並沒有對這個 請求做任何處理,也就是說此時對於 請求來講,是乙個http 請求的 必經之路 所以可以在這個 請求傳遞到真正的請求處理中心 之前附加一些需要的資訊在這個 請求資訊之上,或者針...
HttpModule到底是個什麼東西
在學習dnn到urlrewritemodule類時 urlrewritemodule.vb中 發現這個類是由ihttpmodule介面繼承來的。一查msdn知道了urlrewritemodule原來是個httpmodule。那麼httpmodule到底是個什麼東西?有什麼用?用了有什麼好處?http...
SSL是如何工作的
金鑰密碼系統介紹 這篇文章向大家闡述了netscape公司是如何使用rsa的公用金鑰密碼系統來實現網際網路安全的。netscape的安全套接層的實現就利用了這篇文章中所討論的技術。rsa的公用金鑰密碼系統廣泛地應用於計算機工業的認證和加密方面。netscape得到rsa資料安全公司的許可可以使用公用...