.NET之ASP Web Application快速入門(3) 文件Global.asax 除了編寫UI(Use Interface:用戶界面)以外,我們還可以在Web Application中添加"application"級別的控制邏輯代碼以及事件觸發程序。這些代碼不會去操作產生UI,并且基本上不會響應于單獨的頁面請求,它們負責的是處理高級別的application事件,包括Application_Start、Application_End、Session_Start和Session_End。這些控制邏輯代碼位于Web application所在虛擬目錄結構根目錄下的Global.asax文件中,ASP.NET自動地解析這個文件并編譯為動態.NET框架類。這個類擴充了HttpApplication基類,當位于application名字空間內的任意資源或URL被首次訪問時,它就被創建。
Global.asax文件本身經過了設置,任何關于它的直接URL請求都會被自動拒絕,從而保證了外部用戶無法下載它并瀏覽其內容。
Application 或 Session作用范圍內的事件 我們可以在Global.asa文件中編寫方法以定義有關HttpApplication基類的事件觸發程序,方法的命名要匹配于字符串"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> 如果事件觸發代碼需用輸入另外的名字空間,我們可以在.aspx頁面中編寫類似如下代碼的輸入標識: <%@ Import Namespace="System.Text" %> 下面的例子圖解了Application、Session 和Request 的生存期:
Application1.aspx []點擊這里運行例程] | []查看源代碼]
頁面首次打開時,將激活application和session的Onstart事件。關于這些事件觸發程序,請看下面使用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; } 每次請求發生時,都會激活BeginRequest 和EndRequest 事件。比如,當頁面被刷新時,來自BeginRequest、EndRequest 和Page_Load 方法的信息將顯現出來。注意,當放棄當前的session時(點擊"End this session"按鈕),將產生一個新session,接著再次觸發Session_OnStart事件
|