簡介
Global.asax是一個文本文件,它提供全局可用代碼。這些代碼包括應用程序的事件處理程序以及會話事件、方法和靜態變量。有時該文件也被稱為應用程序文件。
Global.asax 文件繼承自 HttpApplication 類,Global.asax 文件中的任何代碼都是它所在的應用程序的一部分。
每個應用程序在其根目錄下只能有一個Global.asax文件。不過這個文件是可選的,如果刪除掉Global.asax文件,應用程序將對所有事件應用由 HttpApplication類提供的默認行為,不會出現問題。
作用
Global.asax文件主要用來處理更高級別的應用程序事件,如Application_Start、Application_End、Session_Start、Session_End等。
Global.asax文件中的事件,幾乎涵蓋了應用程序運行的任何節點。你可以在應用程序啟動、應用程序遇到異常、用戶會話超時等節點添加處理事件。
Global.asax的處理事件
Global.asax 文件包含以下事件:
- Application_Init:在應用程序被實例化或第一次被調用時,該事件被觸發。對于所有的HttpApplication 對象實例,它都會被調用。
- Application_Disposed:在應用程序被銷毀之前觸發。這是清除以前所用資源的理想位置。
- Application_Error:當應用程序中遇到一個未處理的異常時,該事件被觸發。
- Application_Start:在HttpApplication 類的第一個實例被創建時,該事件被觸發。它允許你創建可以由所有HttpApplication 實例訪問的對象。
- Application_End:在HttpApplication 類的最后一個實例被銷毀時,該事件被觸發。在一個應用程序的生命周期內它只被觸發一次。
- Application_BeginRequest:在接收到一個應用程序請求時觸發。對于一個請求來說,它是第一個被觸發的事件,請求一般是用戶輸入的一個頁面請求(URL)。
- Application_EndRequest:針對應用程序請求的最后一個事件。
- Application_PreRequestHandlerExecute:在 ASP.NET 頁面框架開始執行諸如頁面或 Web 服務之類的事件處理程序之前,該事件被觸發。
- Application_PostRequestHandlerExecute:在 ASP.NET 頁面框架結束執行一個事件處理程序時,該事件被觸發。
- Applcation_PreSendRequestHeaders:在 ASP.NET 頁面框架發送 HTTP 頭給請求客戶(瀏覽器)時,該事件被觸發。
- Application_PreSendContent:在 ASP.NET 頁面框架發送內容給請求客戶(瀏覽器)時,該事件被觸發。
- Application_AcquireRequestState:在 ASP.NET 頁面框架得到與當前請求相關的當前狀態(Session 狀態)時,該事件被觸發。
- Application_ReleaseRequestState:在 ASP.NET 頁面框架執行完所有的事件處理程序時,該事件被觸發。這將導致所有的狀態模塊保存它們當前的狀態數據。
- Application_ResolveRequestCache:在 ASP.NET 頁面框架完成一個授權請求時,該事件被觸發。它允許緩存模塊從緩存中為請求提供服務,從而繞過事件處理程序的執行。
- Application_UpdateRequestCache:在 ASP.NET 頁面框架完成事件處理程序的執行時,該事件被觸發,從而使緩存模塊存儲響應數據,以供響應后續的請求時使用。
- Application_AuthenticateRequest:在安全模塊建立起當前用戶的有效的身份時,該事件被觸發。在這個時候,用戶的憑據將會被驗證。
- Application_AuthorizeRequest:當安全模塊確認一個用戶可以訪問資源之后,該事件被觸發。
- Session_Start:在一個新用戶訪問應用程序 Web 站點時,該事件被觸發。
- Session_End:在一個用戶的會話超時、結束或他們離開應用程序 Web 站點時,該事件被觸發。
實例說明
我們以Application_Error(程序遇到未處理的異常時觸發)事件做一個實例說明。我們現在GLobal.asax文件中注冊Application_Error事件,如下:
protected void Application_Error(object sender, EventArgs e)
{
//獲取前一個觸發到的異常信息
Exception ex = Server.GetLastError().GetBaseException();
//將前一個異常信息清除。不清除會觸發錯誤詳情頁(黃頁)。
Server.ClearError();
//將錯誤信息返回到客戶端
Response.Write("Error:" + ex.Message);
}
當應用程序觸發未處理的異常時,會觸發該事件。我們在事件中會給前臺返回一個錯誤消息。
然后我們在上篇文章創建的MVC測試項目中,添加一個Action方法。

我們請求這個Action,顯示如下界面:

需要注意的是,我們在Application_Error事件中,必須將捕獲到的Error清除掉,也就是這行代碼:Server.ClearError();。否則將會引發ASP.Net的詳細錯誤頁面(俗稱黃頁)。
總結
本文我們了解到了Global.asax文件的作用以及包含的處理事件,我們根據Application_Error實例能大概了解到事件的使用方法。在實際項目中,我們可以使用Global.asax統一管理應用程序中注冊、登錄、異常等等事件,這樣可以使我們的應用程序更加規范,更加易于管理。
-
代碼
+關注
關注
30文章
4967瀏覽量
73960 -
應用程序
+關注
關注
38文章
3344瀏覽量
60251 -
Asp.net
+關注
關注
0文章
36瀏覽量
14246 -
Global
+關注
關注
0文章
12瀏覽量
8683
發布評論請先 登錄
ASP.net Ajax開發.zip
《ASP.NET 2.0網絡開發技術》 ASP.NET 2.0核心對象.pdf
《ASP.NET 2.0網絡開發技術》 走進ASP.NET 2.0.pdf
北大青鳥asp.net教程
Programming Microsoft ASP.NET
ASP.NET課程設計案例精編
Asp.net MVC框架自定義視圖引擎的實現
ASP.NET MVC5教學之如何創建MVC文件架構
ASP.NET MVC5教學之過濾器(上)
ASP.NET MVC5教學之過濾器(下)
ASP.NET MVC5教學之Global.asax文件
評論