HttpHandler 是 ASP.NET 請求管線的終端處理者,專注處理對應其路徑的特定請求。與對每個請求皆觸發的 HttpModule 不同,Handler 只處理映射到自身的請求,提供更精準的控制點。
實作極簡,僅包含一個方法與一個屬性:
public interface IHttpHandler
{
void ProcessRequest(HttpContext context);
bool IsReusable { get; }
}
ProcessRequest 是核心,接收 HttpContext 實例,負責從頭到尾處理 Web 請求。雖介面簡單,但 WebForms、WebServices 皆是透過此介面實現,蘊含強大能力。
Handler 可透過 HttpContext 存取所有關鍵物件:
Request - 取得使用者提交資料Response - 輸出回應內容 (核心為 Response.OutputStream)Session / Cache - 狀態管理最簡單的 Handler 範例:
public void ProcessRequest(HttpContext context)
{
context.Response.Write("Hello World");
}
WebForms 雖強大,但執行頁面生命週期、建立控制項樹狀結構、ViewState 管理等帶來額外開銷。以下場景自訂 Handler 更高效:
ASP.NET 執行階段支援非同步 Handler,將處理「卸載」至獨立執行緒池,釋放主執行緒處理其他請求。.NET 1.x 中卸載後仍在同一執行緒池,效能提升有限。真正非同步需自行管理執行緒與回呼。
.NET 2.0 (Beta 2) 在 IHttpAsyncHandler 與 Page 類別改進非同步支援,提供更好效能模型。

圖示說明:Application 為宿主容器,請求經過 HttpModule (過濾器) 最後由 HttpHandler 處理。Context 物件貫穿全程提供請求特定資訊。
掌握 Handler 機制,是突破 WebForms 框架限制、構建高效能 Web 端點的關鍵技能。