來源:MSDN
如何:建立 HTTP 處理程式工廠
IHttpHandlerFactory 接口用于建立和管理處理請求的 HTTP 處理程式。是以,可以建立一個實作 IHttpHandlerFactory接口的類,然後将該類用作 HTTP 處理程式。這樣可以更好地控制對 HTTP 請求的處理,因為這樣可将 URL 映射到基于一組複雜條件建立不同處理程式的 HTTP 處理程式工廠。例如,使用 HTTP 處理程式工廠可以建立通路昂貴或有限資源(如資料庫連接配接等)的數量有限的 HTTP 處理程式對象,然後在以後的請求中重用這些處理程式對象。
建立自定義 HTTP 處理程式工廠
建立 HandlerFactory HTTP 處理程式工廠類
1. 在網站的 App_Code 目錄中建立一個名為 HelloWorldHandler的類。
2. 向類檔案中添加下面的代碼。
C# 代碼
using System;
using System.Web;
class HandlerFactory : IHttpHandlerFactory
{
public IHttpHandler GetHandler(HttpContext context,
string requestType, String url, String pathTranslated)
{
IHttpHandler handlerToReturn;
if ("get" == context.Request.RequestType.ToLower())
{
handlerToReturn = new HelloWorldHandler();
}
else if ("post" == context.Request.RequestType.ToLower())
handlerToReturn = new HelloWorldAsyncHandler();
else
handlerToReturn = null;
return handlerToReturn;
}
public void ReleaseHandler(IHttpHandler handler)
public bool IsReusable
get
return false;
}
3. 這段代碼實作 IHttpHandlerFactory接口的 GetHandler 方法,并在請求為 GET請求時傳回所建立的同步處理程式。如果請求為 POST請求,則傳回異步處理程式接口。
建立自定義 HTTP 處理程式
建立 HelloWorldHandler 和 HelloWorldAsyncHandler 類
3. 在網站的 App_Code 目錄中建立一個名為 HelloWorldAsyncHandler的類。
注冊自定義 HTTP 處理程式工廠
建立完自定義 HTTP 處理程式工廠類後,必須在網站的 Web.config 檔案中注冊它。這使 ASP.NET 可以使用該處理程式工廠類服務于向檔案擴充名為 .sample 的資源發出的請求。
在 Web.config 檔案中注冊自定義 HTTP 處理程式
1. 将 Web.config 檔案添加到網站(如果該檔案尚未存在)。
2. 将下面突出顯示的元素添加到 Web.config 檔案中。
<configuration>
<system.web>
<httpHandlers> <add verb="GET,POST" path="*.sample" type="HandlerFactory" /> </httpHandlers>
</system.web>
</configuration>
3. 這段代碼使用 HandlerFactory的類名和處理程式名注冊該處理程式。
在 IIS 6.0 中配置 HTTP 處理程式擴充名
在 IIS 6.0 中将 .sample 檔案擴充名映射為 ASP.NET
1. 打開“Internet 資訊服務(IIS)管理器”。
2. 右擊應用程式名稱,然後單擊“屬性”。
注意
有關建立 ASP.NET 應用程式的說明,請參見如何:在 IIS 中建立和配置本地 ASP.NET 網站。
3. 單擊“虛拟目錄”頁籤,然後單擊“配置”。
4. 在“映射”頁籤上,單擊“添加”。
将顯示“添加/編輯應用程式擴充名映射”對話框。
5. 在“可執行檔案”框中,鍵入或浏覽至 Aspnet_isapi.dll 檔案。預設情況下,該檔案位于以下位置。
%windows%"Microsoft.NET"Framework"version"
可以從其他映射(如 .aspx 檔案的映射)獲得完整路徑和檔案名。
6. 在“擴充名”框中,鍵入 .sample。
7. 清除“确認檔案是否存在”複選框。
8. 單擊“确定”,然後關閉 IIS 管理器。
測試自定義 HTTP 處理程式工廠
建立并注冊了自定義 HTTP 處理程式工廠後,可以建立 HTML 頁(使該頁請求具有 .sample 檔案擴充名的資源)來對其進行測試。
1. 在應用程式中建立一個 HTML 頁(檔案擴充名為 .htm)。
2. 在該頁的 body節中,添加下面的代碼。
<form action="Sample.sample" method="get">
<input type="submit" value="Submit to Sample.sample via Get" />
</form>
<br />
<form action="Sample.sample" method="post">
<input type="submit" value="Submit to Sample.sample via Post" />
3. 在浏覽器中請求該 HTML 頁。
4. 單擊其中的一個按鈕。
如果單擊了第一個按鈕,則 HTTP 處理程式工廠将通過建立和調用同步 HTTP 處理程式來響應請求。如果單擊了第二個按鈕,則 HTTP 處理程式工廠将通過建立和調用異步 HTTP 處理程式來響應請求。