首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET Global.asax 應用程式事件完整指南

     編輯:關於ASP.NET

Global.asax 是 ASP.NET 應用程式的選用檔案,集中處理應用程式層級與模組層級事件(啟動、結束、錯誤、請求管線等)。本文詳細列出所有事件、觸發時機與典型用法。

檔案特性

  • 位於應用程式根目錄,副檔名 .asax 區別於 .aspx。
  • 直接 HTTP 請求會被自動拒絕,使用者無法下載/檢視內容。
  • 修改後框架自動重啟應用程式域(清除 Session、Application 狀態)。

事件完整列表與用途

事件觸發時機典型用途
Application_Init應用程式實例化/首次呼叫初始化共用資源(每個 HttpApplication 實例皆執行)
Application_Start第一個 HttpApplication 建立時建立單例物件、快取預載、啟動背景工作
Application_BeginRequest收到請求(管線第一個事件)URL 重寫、記錄請求資訊、啟動計時器
Application_AuthenticateRequest安全模組建立使用者身分後自訂驗證邏輯、載入使用者權限
Application_AuthorizeRequest授權檢查通過後細粒度授權控制
Application_ResolveRequestCache授權完成後輸出快取攔截、自訂快取邏輯
Application_AcquireRequestState取得 Session 狀態後載入自訂狀態提供者
Application_PreRequestHandlerExecute執行 Handler (頁面/Web Service) 前效能計數、前置處理
Application_PostRequestHandlerExecuteHandler 執行結束後後置處理、壓縮回應
Application_ReleaseRequestState所有 Handler 執行完畢儲存 Session 狀態
Application_UpdateRequestCacheHandler 執行完畢寫入輸出快取
Application_EndRequest請求結束(管線最後事件)記錄回應時間、清理請求資源
Application_Error未處理例外發生時全域錯誤記錄、友善錯誤頁面導向
Application_Disposed應用程式銷毀前釋放非託管資源、關閉連線池
Application_End最後一個 HttpApplication 銷毀應用程式關閉清理(僅執行一次)
Session_Start新使用者造訪初始化 Session 變數、線上人數計數
Session_EndSession 逾時/結束清理使用者資源、記錄離線

實用範例:請求計時與日誌

void Application_BeginRequest(Object sender, EventArgs e)
{
    Context.Items["ReqStart"] = DateTime.Now;
}
void Application_EndRequest(Object sender, EventArgs e)
{
    if (Context.Items["ReqStart"] != null)
    {
        TimeSpan elapsed = DateTime.Now - (DateTime)Context.Items["ReqStart"];
        LogRequest(Context.Request.Url, elapsed.TotalMilliseconds);
    }
}

注意事項

  • Application_Start 僅執行一次,適合昂貴初始化;Application_Init 每個 HttpApplication 實例皆執行。
  • Session_End 僅在 InProc 模式生效;StateServer/SQLServer 模式不觸發。
  • 避免在事件中執行耗時同步 I/O,影響輸送量。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved