|
文件Global.asax
除了編寫UI(Use Interface:用戶界面)以外,我們還可以在Web Application中添加"application"級(jí)別的控制邏輯代碼以及事件觸發(fā)程 序。這些代碼不會(huì)去操作產(chǎn)生UI,并且基本上不會(huì)響應(yīng)于單獨(dú)的頁面請 求,它們負(fù)責(zé)的是處理高級(jí)別的application事件,包括 Application_Start、Application_End、Session_Start和 Session_End。這些控制邏輯代碼位于Web application所在虛擬目錄結(jié)構(gòu)根目錄下的Global.asax文件中, ASP.NET自動(dòng)地解析這個(gè)文件并編譯為動(dòng)態(tài).NET框架類。這個(gè)類擴(kuò)充了 HttpApplication基類,當(dāng)位于application名字空間內(nèi)的任意資源或 URL被首次訪問時(shí),它就被創(chuàng)建。
Global.asax文件本身經(jīng)過了設(shè)置,任何關(guān)于它的直接URL請求都會(huì)被自 動(dòng)拒絕,從而保證了外部用戶無法下載它并瀏覽其內(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)識(shí):
<%@ 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í),都會(huì)激活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事件。
|