概述
HttpHandler是一個HTTP請求的真正處理中心,也正是在這個HttpHandler容器中,ASP.NET Framework才真正地對客戶端請求的服務器頁面做出編譯和執行,並將處理過後的信息附加在HTTP請求信息流中再次返回到HttpModule中。
IHttpHandler是什麼
IHttpHandler在MSDN中的定義:使用自定義的HTTP處理程序同步處理HTTP Web請求而實現的協定。(注意:如果是異步的話就要使用IHttpAsyncHandler接口)
IHttpHandler定義瞭如果要實現一個HTTP請求的處理所必需實現的一些系統約定。HttpHandler與HttpModule不同,一旦定義了自己的HttpHandler類,那麼它對系統的HttpHandler的關係將是“覆蓋”關係。
IHttpHandler包含一個屬性IsReusable,用於獲取當前IHttpHandler實例是否可用,一般設置爲true;一個方法ProcessRequest(HttpContext context),進行實際的操作過程。
IHttpHandler如何處理HTTP請求
當一個HTTP請求經過HttpModule容器傳遞到HttpHandler容器中時,ASP.NET Framework會調用HttpHandler的ProcessRequest成員方法來對這個HTTP請求進行真正的處理。
流程圖
httpHandlers結點中各屬性意義
Verb屬性
指定了處理程序支援的HTTP動作。“*”支持所有的HTTP動作;“GET”支援Get操作;“POST”支援Post操作;“GET, POST”支援兩種操作
Path屬性
指定了需要調用處理程序的路徑和文件名(可以包含萬用字元).“”、“.aspx”
Type屬性
用名字空間、類名稱和程序集名稱的組合形式指定處理程序或處理程序工廠的實際類型. ASP.NET運行時首先搜索bin目錄中的DLL,接着在GAC中搜索
Web.Config中的配置
選擇泛型處理常式,然後輸入名稱,如圖所示:
創建檔之後所看到的原始代碼,如圖所示:
IRequiresSessionState,讀取Session值所用接口; context.Response.Write(“Hello World”) 返回值
學習資料
1.1 ASP.NET中的異步 HttpHandler實現
http://www.hello-code.com/blog/asp.net/201512/5793.html
1.2 HttpHandler的認識與加深理解
http://www.cnblogs.com/whtydn/archive/2009/10/19/1585778.html
1.3 什麼是HttpHandler
http://www.studyofnet.com/news/378.html