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 文件包含如下事件:函數
函數名測試 |
說明ui |
---|---|
Application_Initspa |
在應用程序被實例化或第一次被調用時,該事件被觸發。對於全部的HttpApplication 對象實例,它都會被調用。code |
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事件,以下:
1 protected void Application_Error(object sender, EventArgs e) 2 { 3 //獲取前一個觸發到的異常信息 4 Exception ex = Server.GetLastError().GetBaseException(); 5 //將前一個異常信息清除。不清除會觸發錯誤詳情頁(黃頁)。 6 Server.ClearError(); 7 //將錯誤信息返回到客戶端 8 Response.Write("Error:" + ex.Message); 9 }
當應用程序觸發未處理的異常時,會觸發該事件。咱們在事件中會給前臺返回一個錯誤消息。
而後咱們在上篇文章建立的MVC測試項目中,添加一個Action方法。
咱們請求這個Action,顯示以下界面:
須要注意的是,咱們在Application_Error事件中,必須將捕獲到的Error清除掉,也就是這行代碼:Server.ClearError();
。不然將會引起ASP.Net的詳細錯誤頁面(俗稱黃頁)。
本文咱們瞭解到了Global.asax文件的做用以及包含的處理事件,咱們根據Application_Error實例能大概瞭解到事件的使用方法。在實際項目中,咱們可使用Global.asax統一管理應用程序中註冊、登陸、異常等等事件,這樣可使咱們的應用程序更加規範,更加易於管理。
更多內容可訪問個人博客:http://www.yunc.top/