明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

Global.asa 參考(3) - Session 事件

[摘要]當沒有會話的用戶在打開應用程序中的 Web 頁時,Web 服務器會自動創(chuàng)建會話。當超時或服務器調用 Abandon 方法時,服務器將終止該會話。 會話有兩個事件,即 Session_OnStart 事件和 Session_OnEnd 事件。 可以在全局文件 Global.asa 中為這兩個事件指定...

當沒有會話的用戶在打開應用程序中的 Web 頁時,Web 服務器會自動創(chuàng)建會話。當超時或服務器調用 Abandon 方法時,服務器將終止該會話。
會話有兩個事件,即 Session_OnStart 事件和 Session_OnEnd 事件。
可以在全局文件 Global.asa 中為這兩個事件指定腳本。當會話開始時,服務器在 Global.asa 文件中查找并處理
Session_OnStart 事件腳本。該腳本將在處理用戶請求的 Web 頁之前處理。在會話結束時,服務器將處理 Session_OnEnd 事件腳本。
1.Session_OnStart
Session_OnStart 事件在服務器創(chuàng)建新會話時發(fā)生。服務器在執(zhí)行請求的頁之前先處理該腳本。Session_OnStart 事件是設置會
話期變量的最佳時機,因為在訪問任何頁之前都會先設置它們。所有內建對象 (Application、ObjectContext、Request、
Response、Server 和 Session) 都可以在 Session_OnStart 事件腳本中使用和引用。語法
<SCRIPT LANGUAGE=ScriptLanguage RUNAT=Server> Sub Session_OnStart. . .End Sub
</SCRIPT> 參數ScriptLanguage
指定用于編寫事件腳本的腳本編寫語言?梢允侨魏我环N支持腳本的語言,例如 VBScript 或 JScript。如果有多個事件使用同
一種腳本編寫語言,就可以將它們組織在一組 <SCRIPT> 標記下。 示例
盡管在 Session_OnStart 事件包含 Redirect 或 End 方法調用的情況下 Session 對象仍會保持,然而服務器將停止處理
Global.asa 文件并觸發(fā) Session_OnStart 事件的文件中的腳本。
舉一個例子,為了確保用戶在打開某個特定的 Web 頁時始終啟動一個會話,就可以在 Session_OnStart 事件中調用 Redirect
方法。當用戶進入應用程序時,服務器將為用戶創(chuàng)建一個會話并處理 Session_OnStart 事件腳本。您可以將腳本包含在該事件中
以便檢查用戶打開的頁是不是啟動頁,如果不是,就指示用戶調用 Response.Redirect 方法啟動網頁。其演示如下例所示。
<SCRIPT RUNAT=Server Language=VBScript>Sub Session_OnStart
' Make sure that new users start on the correct
' page of the ASP application.
' Replace the value given to startPage below
' with the virtual path to your application's ' start page.
startPage = "/MyApp/StartHere.asp"
currentPage = Request.ServerVariables("SCRIPT_NAME")
' Do a case-insensitive compare, and if they
' don't match, send the user to the start page.
if strcomp(currentPage,startPage,1) then Response.Redirect(startPage) end ifEnd Sub</SCRIPT>
上述示例只能在支持 cookie 的瀏覽器中運行。因為不支持 cookie 的瀏覽器不能返回 SessionID cookie,所以,每當用戶請
求 Web 頁時,服務器都會創(chuàng)建一個新會話。這樣,對于每個請求,服務器都將處理 Session_OnStart 腳本并將用戶重定向到啟
動頁中。如果您要使用下面的腳本,建議您在啟動頁上放一個通知,告訴用戶該站點要求支持 cookie 的瀏覽器。注釋
請注意,在 Redirect 方法之后的任何 Session_OnStart 事件腳本都不會執(zhí)行。因此,應該在您的事件腳本的最后再調用
Redirect 方法。其演示如下例所示。<SCRIPT LANGUAGE=VBScript RUNAT=Server>
Sub Session_OnStart ' Session initialization script
Response.Redirect "http:/server/app/StartHere.asp" End sub</SCRIPT>
在上面的例子中,Redirect 方法在執(zhí)行會話初始化腳本期間隱藏所有顯示給客戶的文字。 2.Session_OnEnd
Session_OnEnd 事件在會話被放棄或超時發(fā)生。在服務器內建對象中,只有 Application、Server 和 Session 對象可用。語法
<SCRIPT LANGUAGE=ScriptLanguage RUNAT=Server> Sub Session_OnEnd. . . End Sub
</SCRIPT> 參數ScriptLanguage
指定用于編寫事件腳本的腳本編寫語言?梢允侨我恢С帜_本編寫的語言,例如 VBScript 或 JScript。如果有多個事件使用同
一種腳本編寫語言,則可以將其組織在一組 <SCRIPT> 標記下。 注釋在 Session_OnEnd 腳本中不能調用 MapPath 方法。 (出處:熱點網絡)