INFO: ASP.NET HTTP 模組與 HTTP 處理常式概觀

文章翻譯 文章翻譯
文章編號: 307985 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

結論

本文介紹 ASP.NET HTTP 模組與 HTTP 處理常式。

如需其他 ASP.NET 概觀,請參考下列「Microsoft 知識庫」文件:
305140 INFO: ASP.NET 藍圖

其他相關資訊

HTTP 模組與 HTTP 處理常式是 ASP.NET 架構的主要部分。 處理要求時,每個要求會先由多重 HTTP 模組 (例如,驗證模組和工作階段模組) 處理,再由單一 HTTP 處理常式處理。 處理常式已處理過的要求會經由 HTTP 模組傳回。

本文分為下列各節:

HTTP 模組

處理常式在執行前後,會呼叫模組。 模組可以讓開發人員攔截、參與或修改每個要求。 模組所實作的 IHttpModule 介面,是位於 System.Web 命名空間中。

可用事件

HttpApplication 類別提供了模組可以同步處理的許多事件。 下列是模組可以與每個要求同步處理的事件。 依循序列出這些事件:
  • BeginRequest: 已經啟動要求。 如果要在要求前執行某個動作 (例如,在每頁頁首顯示廣告橫幅),請同步處理這個事件。
  • AuthenticateRequest: 如果要插入您的自訂驗證配置 (例如,在資料庫中查看使用者,以驗證密碼),則可以建置模組,以便同步處理這個事件並驗證使用者。
  • AuthorizeRequest: 您可以在內部使用這個事件,以實作授權機制 (例如,將存取控制清單 (ACL) 儲存在資料庫,而非存入檔案系統)。 您也可以覆寫這個事件,但無此必要。
  • ResolveRequestCache: 這個事件可以判斷是否能從「輸出」快取服務網頁。 如果要自行撰寫快取模組 (例如,建置檔案快取,而非建置記憶體快取),則可以同步處理這個事件,以判斷是否可以從快取服務網頁。
  • AcquireRequestState: 工作階段狀態是擷取自狀態儲存區。 如果要建置自已的狀態管理模組,則可以同步處理這個事件,以便從狀態儲存區擷取「工作階段」狀態。
  • PreRequestHandlerExecute: 這個事件會在執行 HTTP 處理常式之前產生。
  • PostRequestHandlerExecute: 這個事件會在執行 HTTP 處理常式之後產生。
  • ReleaseRequestState: 工作階段狀態會存回狀態儲存區。 如果要建置自訂工作階段狀態模組,則必須將狀態存回狀態儲存區。
  • UpdateRequestCache: 這個事件會將輸出內容寫回輸出快取。 如果要建置自訂快取模組,則必須將輸出內容寫回快取。
  • EndRequest: 要求已完成。 您可能想要建置偵錯模組,以便收集要求的全部資訊,然後再將資訊寫入網頁中。
下列事件可以讓模組同步處理每個要求傳輸。 這些事件沒有一定的順序。
  • PreSendRequestHeaders: 這個事件會在傳送標頭之前產生。 如果要新增其他標頭,您可以從自訂模組同步處理這個事件。
  • PreSendRequestContent: 這個事件會在呼叫 Response.Flush 方法時產生。 如果要新增其他內容,您可以從自訂模組同步處理這個事件。
  • Error: 這個事件會在出現無法處理的例外狀況時產生。 如果要撰寫自訂錯誤處理常式模組,則可以同步處理這個事件。

設定 HTTP 模組

<httpModules> 設定區段處理常式負責設定應用程式中的 HTTP 模組。 您可以在電腦、網站或應用程式層級中加以宣告。 請使用下列 <httpModules> 區段處理常式的語法:
<httpModules>
   <add type="[COM+ Class], [Assembly]" name="[ModuleName]" />
   <remove type="[COM+ Class], [Assembly]" name="[ModuleName]" />
   <clear />
</httpModules>
				

建立 HTTP 模組

如果要建立 HTTP 模組,則必須實作 IHttpModule 介面。 IHttpModule 介面的 2 個方法具有下列簽章:
void Init(HttpApplication);
void Dispose();
				
如需有關建立 HTTP 模組的詳細資訊,請按一下下列的文件編號,檢視「Microsoft 知識庫」中的文件:
308000 如何: 使用 Visual Basic .NET 建立 ASP.NET HTTP 模組
307996 如何: 使用 Visual C# .NET 建立 ASP.NET HTTP 模組

HTTP 處理常式

處理常式可以用來處理個別的結束點要求。 處理常式可以讓 ASP.NET 架構處理應用程式中的個別 HTTP URL 或 URL 擴充程式群組。 有別於模組的是,它只使用一個處理常式來處理要求。 所有處理常式實作的 IHttpHandler 介面,是位於 System.Web 命名空間中。 處理常式有點類似於「Internet 伺服器應用程式發展介面」(ISAPI) 擴充程式。

設定 HTTP 處理常式

<httpHandlers> 設定區段處理常式負責將內送 URL 對應至 IHttpHandlerIHttpHandlerFactory 類別。 您可以在電腦、網站或應用程式層級上加以宣告。 子目錄會沿用這些設定值。

系統管理員可以使用 <add> 標籤指示詞,來設定 <httpHandlers> 區段。 <Add> 指示詞是由上而下依序解譯處理。 請使用下列 <httpHandler> 區段處理常式的語法:
<httpHandlers>
   <add verb="[verb list]" path="[path/wildcard]" type="[COM+ Class], [Assembly]" validate="[true/false]" />
   <remove verb="[verb list]" path="[path/wildcard]" />
   <clear />
</httpHandlers>
				

建立 HTTP 處理常式

如果要建立 HTTP 處理常式,則必須實作 IHttpHandler 介面。 IHttpHandler 介面各有一個方法和內容,均具有下列簽章:
void ProcessRequest(HttpContext);
bool IsReusable {get;}
				
注意: 如果 HTTP 處理常式需要工作階段狀態,則您還必須實作 IRequiresSessionState 介面。 如需有關建立 HTTP 處理常式的詳細資訊,請按一下下列的文件編號,檢視「Microsoft 知識庫」中的文件:
308001 如何: 使用 Visual C# .NET 建立 ASP.NET HTTP 處理常式
如需詳細資訊,請按一下下列的文件編號,檢視「Microsoft 知識庫」中的文件:
307997 如何: 使用 Visual Basic .NET 建立 ASP.NET HTTP 處理常式

屬性

文章編號: 307985 - 上次校閱: 2003年9月16日 - 版次: 2.2
這篇文章中的資訊適用於:
  • Microsoft ASP.NET 1.0
關鍵字:?
kbarttyperoadmap kbhttphandlers kbhttpmodule kbhttpruntime kbinfo KB307985
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。
依現狀不再更新的知識庫內容免責聲明
本文旨在說明 Microsoft 不再提供支援的產品。因此,本文係依「現狀」提供,不會再更新。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com