.NET之ASP Web Application快速入門(3) 文件Global.asax
除了編寫UI(Use Interface:用戶界面)以外,我們還可以在Web Application中添加"application"級別的控制邏輯代碼以及事件觸發(fā)程序。這些代碼不會去操作產(chǎn)生UI,并且基本上不會響應(yīng)于單獨(dú)的頁面請求,它們負(fù)責(zé)的是處理高級別的application事件,包括Application_Start、Application_End、Session_Start和Session_End。這些控制邏輯代碼位于Web application所在虛擬目錄結(jié)構(gòu)根目錄下的Global.asax文件中,ASP.NET自動地解析這個(gè)文件并編譯為動態(tài).NET框架類。這個(gè)類擴(kuò)充了HttpApplication基類,當(dāng)位于application名字空間內(nèi)的任意資源或URL被首次訪問時(shí),它就被創(chuàng)建。
Global.asax文件本身經(jīng)過了設(shè)置,任何關(guān)于它的直接URL請求都會被自動拒絕,從而保證了外部用戶無法下載它并瀏覽其內(nèi)容。
Application 或 Session作用范圍內(nèi)的事件
我們可以在Global.asa文件中編寫方法以定義有關(guān)HttpApplication基類的事件觸發(fā)程序,方法的命名要匹配于字符串"Application_事件名稱"。比如,請看下面使用VB、C#以及JScript三種語言編寫的代碼:
C#
<script language="C#" runat="server">
void Application_Start() { // Application startup code goes here } </script>
VB
<script language="VB" runat="server">
Sub Application_Start() ’ Application startup code goes here End Sub </script>
JScript
<script language="JScript" runat="server">
function Application_Start() : void { // Application startup code goes here } </script>
如果事件觸發(fā)代碼需用輸入另外的名字空間,我們可以在.aspx頁面中編寫類似如下代碼的輸入標(biāo)識:
<%@ Import Namespace="System.Text" %>
下面的例子圖解了Application、Session 和Request 的生存期:
Application1.aspx
[]點(diǎn)擊這里運(yùn)行例程] | []查看源代碼]
頁面首次打開時(shí),將激活application和session的Onstart事件。關(guān)于這些事件觸發(fā)程序,請看下面使用VB、C#以及JScript三種語言編寫的代碼:
C#
void Application_Start() { Response.Write("Application is Starting..."); }
void Session_Start() { Response.Write("Session is Starting..."); Session.Timeout = 1; }
VB
Sub Application_Start() Response.Write("Application is Starting...") End Sub
Sub Session_Start() Response.Write("Session is Starting...") Session.Timeout = 1 End Sub
JScript
function Application_Start() : void { Response.Write("Application is Starting..."); }
function Session_Start() : void { Response.Write("Session is Starting..."); Session.Timeout = 1; }
每次請求發(fā)生時(shí),都會激活BeginRequest 和EndRequest 事件。比如,當(dāng)頁面被刷新時(shí),來自BeginRequest、EndRequest 和Page_Load 方法的信息將顯現(xiàn)出來。注意,當(dāng)放棄當(dāng)前的session時(shí)(點(diǎn)擊"End this session"按鈕),將產(chǎn)生一個(gè)新session,接著再次觸發(fā)Session_OnStart事件。
|