2008-12-24 41 views
56

什麼是ASP.NET中的HttpHandler?爲什麼以及如何使用?什麼是ASP.NET中的HttpHandler

+1

也許你可以從MSDN開始使用此頁面: [http://msdn.microsoft.com/en-us/library/bb398986.aspx](http://msdn.microsoft.com/zh-cn/ us/library/bb398986.aspx) – M4N 2008-12-24 09:55:47

回答

72

在最簡單的術語,ASP.NET HttpHandler是一個實現System.Web.IHttpHandler接口的類。

ASP.NET HTTPHandlers負責攔截對您的ASP.NET Web應用程序服務器發出的請求。它們作爲流程運行,以響應對ASP.NET站點的請求。最常見的處理程序是處理.aspx文件的ASP.NET頁面處理程序。當用戶請求.aspx文件時,該請求由頁面通過頁面處理程序進行處理。

ASP.NET提供了一些默認HTTP處理程序

  • 頁處理程序(的.aspx):處理網頁
  • 用戶控制處理程序(的.ascx):處理Web用戶控件的頁面
  • Web服務處理程序(的.asmx):處理Web服務頁面
  • 跟蹤處理程序(的trace.axd):處理跟蹤功能

您可以創建自己的自定義HTTP處理程序,它將自定義輸出呈現給瀏覽器。 ASP.NET中HTTP處理程序的典型場景爲例如

  • 傳遞動態創建的圖像(圖表)或調整大小的圖片。
  • RSS源,其發射RSS-XML格式化

實現IHttpHandler界面來創建一個同步處理程序和IHttpAsyncHandler界面來創建一個異步處理程序。這些接口要求您實施ProcessRequest方法和IsReusable屬性。

ProcessRequest方法處理所做請求的實際處理,而布爾IsReusable屬性指定您的處理程序是否可以重新使用(以提高性能),或者每個請求是否需要新的處理程序。

+1

+感謝您的簡要和容易理解的解釋 – Mostafa 2011-10-09 23:26:38

14

HttpHandler(或IHttpHandler)基本上是負責提供內容的任何東西。 ASP.NET頁面(aspx)是一種處理程序。

你可能會寫自己的,例如,從數據庫中,而不是從Web服務器本身提供圖片等,或者寫一個簡單的POX服務(而不是SOAP/WCF /等)

+0

你可以解釋一下這個**例如,你可以編寫自己的例子來從數據庫中而不是從網絡服務器本身提供圖像等,或者編寫一個簡單的POX服務(而不是SOAP/WCF /等)**? – 2013-06-28 02:50:45

+0

當你請求一個特定的頁面時,會調用「HttpHandler」?這是因爲該頁面是從`HttpHandler`派生的,然後創建了'Page`對象,然後調用了`Page Events`?是這樣嗎? – 2013-07-09 15:21:52

2

HttpHandler的實施例,

HTTP處理程序在ASP.NET 2.0

甲處理程序負責完成從瀏覽器的請求。瀏覽器管理的請求可以通過文件擴展名或直接調用處理程序來處理。用於服務傳入Http請求的低級請求和響應API是Asp.Net中的Http處理程序。所有的處理程序都實現了位於System.Web名稱空間中的IHttpHandler接口。處理程序有點類似於Internet服務器應用程序編程接口(ISAPI)擴展。

您實現IHttpHandler接口來創建一個同步處理程序和IHttpAsyncHandler接口來創建一個異步處理程序。接口要求您實現ProcessRequest方法和IsReusable屬性。 ProcessRequest方法處理所做請求的實際處理,而布爾IsReusable屬性指定您的處理程序是否可以重用以提高性能或每個請求是否需要新的處理程序。

.ashx文件擴展名是爲自定義處理程序保留的。如果您創建一個文件擴展名爲.ashx的自定義處理程序,它將自動在IIS和ASP.NET中註冊。如果您選擇使用備用文件擴展名,則必須在IIS和ASP.NET中註冊擴展名。使用除.ashx之外的擴展的優點是您可以將多個文件擴展名分配給一個處理程序。

配置HTTP處理程序

配置節處理程序負責將傳入的URL映射到了IHttpHandler或IHttpHandlerFactory類。它可以在計算機,網站或應用程序級別聲明。子目錄繼承這些設置。 管理員使用標籤指令來配置該部分。指令以自上而下的順序進行解釋和處理。使用以下語法部分的處理程序:

創建HTTP處理程序

要創建一個HTTP處理程序,您必須實現IHttpHandler接口。 IHttpHandler接口有一個方法和一個屬性,並帶有以下簽名: void ProcessRequest(HttpContext); bool IsReusable {get;}

0

任何執行System.Web.IHttpHandler接口的類都將變爲HttpHandler。這個類作爲流程響應ASP.NET站點的請求而運行。

最常見的處理程序是處理.aspx文件的ASP.NET頁面處理程序。當用戶請求.aspx文件時,該請求由頁面通過頁面處理程序(實現System.Web.IHttpHandler接口的類)處理。

您可以創建自己的自定義HTTP處理程序,將自定義輸出呈現給瀏覽器。

一些ASP.NET默認的處理程序是:

  1. 頁處理程序(的.aspx) - 處理網頁
  2. 用戶控制處理程序(的.ascx) - 處理Web用戶控制網頁
  3. Web服務處理程序(的.asmx) - 處理Web服務頁面
  4. 跟蹤處理程序(的trace.axd) - 處理跟蹤功能
0

的ASP.N ET HTTP處理程序是響應對ASP.NET Web應用程序的請求而運行的進程(通常稱爲「端點」)。最常見的處理程序是處理.aspx文件的ASP.NET頁面處理程序。當用戶請求.aspx文件時,該請求由頁面通過頁面處理程序進行處理。您可以創建自己的HTTP處理程序,將自定義輸出呈現給瀏覽器。

0

ASP.NET HTTP處理程序是爲響應對ASP.NET Web應用程序的請求而運行的進程(通常稱爲「端點」)。最常見的處理程序是處理.aspx文件的ASP.NET頁面處理程序。當用戶請求.aspx file時,請求由頁面通過頁面處理程序處理。

ASP.NET頁面處理程序只是一種類型的處理程序。 ASP.NET附帶了其他幾個內置處理程序,例如.asmx files的Web服務處理程序。

如果您想要使用應用程序中的文件擴展名進行特殊處理,則可以創建自定義HTTP處理程序。例如,以下場景將是自定義HTTP處理程序的良好用途:

RSS訂閱源要創建站點的RSS訂閱源,您可以創建一個發佈RSS格式XML的處理程序。然後,您可以將應用程序中的.rss擴展名(例如)綁定到自定義處理程序。當用戶向您的站點發送以.rss結尾的請求時,ASP.NET將調用您的處理程序來處理請求。

圖像服務器如果您希望您的Web應用程序提供各種尺寸的圖像,您可以編寫自定義處理程序來調整圖像大小,然後將其作爲處理程序的響應發回給用戶。

HTTP處理程序可以訪問應用程序上下文,包括請求用戶的身份(如果知道),應用程序狀態和會話信息。當請求HTTP處理程序時,ASP.NET將調用適當處理程序上的方法ProcessRequest。處理程序的ProcessRequest方法會創建一個響應,並將其發送回請求的瀏覽器。與任何頁面請求一樣,響應經過任何訂閱了處理程序運行後發生的事件的HTTP模塊。