.NET之ASP Web Application快速入門(3)(轉載)
2024-07-10 13:05:07
供稿:網友
 
文件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事件。