.NET之ASP Web Application迅速基礎(chǔ)(3)
發(fā)表時(shí)間:2024-05-24 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要].NET之ASP Web Application快速入門(3)文件Global.asax 除了編寫UI(Use Interface:用戶界面)以外,我們還可以在Web Application中添加"application"級(jí)別的控制邏輯代碼以及事件觸發(fā)程序。這些代碼不會(huì)去操作產(chǎn)...
.NET之ASP Web Application快速入門(3)
文件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事件