簡(jiǎn)介
Global.asax是一個(gè)文本文件,它提供全局可用代碼。這些代碼包括應(yīng)用程序的事件處理程序以及會(huì)話(huà)事件、方法和靜態(tài)變量。有時(shí)該文件也被稱(chēng)為應(yīng)用程序文件。
Global.asax 文件繼承自 HttpApplication 類(lèi),Global.asax 文件中的任何代碼都是它所在的應(yīng)用程序的一部分。
每個(gè)應(yīng)用程序在其根目錄下只能有一個(gè)Global.asax文件。不過(guò)這個(gè)文件是可選的,如果刪除掉Global.asax文件,應(yīng)用程序?qū)?duì)所有事件應(yīng)用由 HttpApplication類(lèi)提供的默認(rèn)行為,不會(huì)出現(xiàn)問(wèn)題。
作用
Global.asax文件主要用來(lái)處理更高級(jí)別的應(yīng)用程序事件,如Application_Start、Application_End、Session_Start、Session_End等。
Global.asax文件中的事件,幾乎涵蓋了應(yīng)用程序運(yùn)行的任何節(jié)點(diǎn)。你可以在應(yīng)用程序啟動(dòng)、應(yīng)用程序遇到異常、用戶(hù)會(huì)話(huà)超時(shí)等節(jié)點(diǎn)添加處理事件。
Global.asax的處理事件
Global.asax 文件包含以下事件:
- Application_Init:在應(yīng)用程序被實(shí)例化或第一次被調(diào)用時(shí),該事件被觸發(fā)。對(duì)于所有的HttpApplication 對(duì)象實(shí)例,它都會(huì)被調(diào)用。
- Application_Disposed:在應(yīng)用程序被銷(xiāo)毀之前觸發(fā)。這是清除以前所用資源的理想位置。
- Application_Error:當(dāng)應(yīng)用程序中遇到一個(gè)未處理的異常時(shí),該事件被觸發(fā)。
- Application_Start:在HttpApplication 類(lèi)的第一個(gè)實(shí)例被創(chuàng)建時(shí),該事件被觸發(fā)。它允許你創(chuàng)建可以由所有HttpApplication 實(shí)例訪(fǎng)問(wèn)的對(duì)象。
- Application_End:在HttpApplication 類(lèi)的最后一個(gè)實(shí)例被銷(xiāo)毀時(shí),該事件被觸發(fā)。在一個(gè)應(yīng)用程序的生命周期內(nèi)它只被觸發(fā)一次。
- Application_BeginRequest:在接收到一個(gè)應(yīng)用程序請(qǐng)求時(shí)觸發(fā)。對(duì)于一個(gè)請(qǐng)求來(lái)說(shuō),它是第一個(gè)被觸發(fā)的事件,請(qǐng)求一般是用戶(hù)輸入的一個(gè)頁(yè)面請(qǐng)求(URL)。
- Application_EndRequest:針對(duì)應(yīng)用程序請(qǐng)求的最后一個(gè)事件。
- Application_PreRequestHandlerExecute:在 ASP.NET 頁(yè)面框架開(kāi)始執(zhí)行諸如頁(yè)面或 Web 服務(wù)之類(lèi)的事件處理程序之前,該事件被觸發(fā)。
- Application_PostRequestHandlerExecute:在 ASP.NET 頁(yè)面框架結(jié)束執(zhí)行一個(gè)事件處理程序時(shí),該事件被觸發(fā)。
- Applcation_PreSendRequestHeaders:在 ASP.NET 頁(yè)面框架發(fā)送 HTTP 頭給請(qǐng)求客戶(hù)(瀏覽器)時(shí),該事件被觸發(fā)。
- Application_PreSendContent:在 ASP.NET 頁(yè)面框架發(fā)送內(nèi)容給請(qǐng)求客戶(hù)(瀏覽器)時(shí),該事件被觸發(fā)。
- Application_AcquireRequestState:在 ASP.NET 頁(yè)面框架得到與當(dāng)前請(qǐng)求相關(guān)的當(dāng)前狀態(tài)(Session 狀態(tài))時(shí),該事件被觸發(fā)。
- Application_ReleaseRequestState:在 ASP.NET 頁(yè)面框架執(zhí)行完所有的事件處理程序時(shí),該事件被觸發(fā)。這將導(dǎo)致所有的狀態(tài)模塊保存它們當(dāng)前的狀態(tài)數(shù)據(jù)。
- Application_ResolveRequestCache:在 ASP.NET 頁(yè)面框架完成一個(gè)授權(quán)請(qǐng)求時(shí),該事件被觸發(fā)。它允許緩存模塊從緩存中為請(qǐng)求提供服務(wù),從而繞過(guò)事件處理程序的執(zhí)行。
- Application_UpdateRequestCache:在 ASP.NET 頁(yè)面框架完成事件處理程序的執(zhí)行時(shí),該事件被觸發(fā),從而使緩存模塊存儲(chǔ)響應(yīng)數(shù)據(jù),以供響應(yīng)后續(xù)的請(qǐng)求時(shí)使用。
- Application_AuthenticateRequest:在安全模塊建立起當(dāng)前用戶(hù)的有效的身份時(shí),該事件被觸發(fā)。在這個(gè)時(shí)候,用戶(hù)的憑據(jù)將會(huì)被驗(yàn)證。
- Application_AuthorizeRequest:當(dāng)安全模塊確認(rèn)一個(gè)用戶(hù)可以訪(fǎng)問(wèn)資源之后,該事件被觸發(fā)。
- Session_Start:在一個(gè)新用戶(hù)訪(fǎng)問(wèn)應(yīng)用程序 Web 站點(diǎn)時(shí),該事件被觸發(fā)。
- Session_End:在一個(gè)用戶(hù)的會(huì)話(huà)超時(shí)、結(jié)束或他們離開(kāi)應(yīng)用程序 Web 站點(diǎn)時(shí),該事件被觸發(fā)。
實(shí)例說(shuō)明
我們以Application_Error(程序遇到未處理的異常時(shí)觸發(fā))事件做一個(gè)實(shí)例說(shuō)明。我們現(xiàn)在GLobal.asax文件中注冊(cè)Application_Error事件,如下:
protected void Application_Error(object sender, EventArgs e)
{
//獲取前一個(gè)觸發(fā)到的異常信息
Exception ex = Server.GetLastError().GetBaseException();
//將前一個(gè)異常信息清除。不清除會(huì)觸發(fā)錯(cuò)誤詳情頁(yè)(黃頁(yè))。
Server.ClearError();
//將錯(cuò)誤信息返回到客戶(hù)端
Response.Write("Error:" + ex.Message);
}
當(dāng)應(yīng)用程序觸發(fā)未處理的異常時(shí),會(huì)觸發(fā)該事件。我們?cè)谑录袝?huì)給前臺(tái)返回一個(gè)錯(cuò)誤消息。
然后我們?cè)谏掀恼聞?chuàng)建的MVC測(cè)試項(xiàng)目中,添加一個(gè)Action方法。
我們請(qǐng)求這個(gè)Action,顯示如下界面:
需要注意的是,我們?cè)贏(yíng)pplication_Error事件中,必須將捕獲到的Error清除掉,也就是這行代碼:Server.ClearError();
。否則將會(huì)引發(fā)ASP.Net的詳細(xì)錯(cuò)誤頁(yè)面(俗稱(chēng)黃頁(yè))。
總結(jié)
本文我們了解到了Global.asax文件的作用以及包含的處理事件,我們根據(jù)Application_Error實(shí)例能大概了解到事件的使用方法。在實(shí)際項(xiàng)目中,我們可以使用Global.asax統(tǒng)一管理應(yīng)用程序中注冊(cè)、登錄、異常等等事件,這樣可以使我們的應(yīng)用程序更加規(guī)范,更加易于管理。
-
代碼
+關(guān)注
關(guān)注
30文章
4900瀏覽量
70756 -
應(yīng)用程序
+關(guān)注
關(guān)注
38文章
3337瀏覽量
59040 -
Asp.net
+關(guān)注
關(guān)注
0文章
36瀏覽量
14091 -
Global
+關(guān)注
關(guān)注
0文章
12瀏覽量
8580
發(fā)布評(píng)論請(qǐng)先 登錄
ASP.net Ajax開(kāi)發(fā).zip
《ASP.NET 2.0網(wǎng)絡(luò)開(kāi)發(fā)技術(shù)》 ASP.NET 2.0核心對(duì)象.pdf
《ASP.NET 2.0網(wǎng)絡(luò)開(kāi)發(fā)技術(shù)》 走進(jìn)ASP.NET 2.0.pdf
《ASP.net Ajax開(kāi)發(fā)》初識(shí)ASP.NET AJAX.pdf
北大青鳥(niǎo)asp.net教程
Programming Microsoft ASP.NET

ASP.NET課程設(shè)計(jì)案例精編

Asp.net MVC框架自定義視圖引擎的實(shí)現(xiàn)
《ASP.NET 2.0網(wǎng)絡(luò)開(kāi)發(fā)技術(shù)》 ASP.NET 2.0核
《ASP.NET 2.0網(wǎng)絡(luò)開(kāi)發(fā)技術(shù)》 走進(jìn)ASP.NET 2.
《ASP.net Ajax開(kāi)發(fā)》初識(shí)ASP.NET AJAX
ASP.NET MVC5教學(xué)之如何創(chuàng)建MVC文件架構(gòu)

ASP.NET MVC5教學(xué)之過(guò)濾器(上)

ASP.NET MVC5教學(xué)之過(guò)濾器(下)

評(píng)論