天天看點

如何:建立 HTTP 處理程式工廠

  來源: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 處理程式來響應請求。

繼續閱讀