HOW TO:使用 ASP 程式中的 Session 與 Application 變數


結論


本文將逐步告訴您,如何設定 Active Server Pages (ASP) 應用程式中的
Session

Application
物件,並從中擷取資訊。


Session 與 Application 變數的基本原理

您可以使用
Application

Session
物件來替某特定使用者 (
Session
) 或所有使用者 (
Application
) 儲存通用性質的值,而非屬於特定網頁的值。


Session

Application
變數是儲存在伺服器上,用戶端瀏覽器則是經由 Cookie 附加至工作階段。所以,如果要讓
Session

Application
變數生效,用戶端必須在瀏覽器中啟用 Cookie。


接下來的範例將示範如何使用 Visual InterDev 來建立
Session

Application
變數。


建立 Visual InterDev Web 專案

  1. 在 Visual InterDev 中建立新的 Web 專案。如需詳細指示,請參閱「Microsoft 知識庫」中的下面文件:
    301184 如何:建立 Visual InterDev 專案

  2. [Project]
    功能表,指向
    [Add Web Item]
    ,然後按一下
    [Active Server Page]

  3. 按一下
    [Open]
    以接受新 ASP 網頁的預設資訊。
現在您已在目前的專案中加入一個 ASP 網頁,下兩節中的 ASP 程式碼範例將示範
Session

Application
變數的用法。


如何使用 Session 變數

Session
物件的威力是來自它可以儲存專用於特定使用者的通用變數之事實;因此,每一個使用者可擁有此變數之自己個別的變數值。當使用者進入應用程式時,並不是每一個使用者的
Session
物件都會自動建立。然而,經由儲存或存取
Session
物件中的變數就會建立
Session
物件並引發
Session_OnStart
事件。


若要演練如何在 ASP 網頁中使用
Session
物件,請執行下列步驟:
  1. 在您先前於 Visual InterDev 中所建立之 ASP 網頁的 <BODY> </BODY> 標記之間貼上下面程式碼:
    <%
    'Store information in a Session variable.
    Session("myInformation") = "somevalue"

    'Display the contents of the Session variable.
    Response.Write Session("myInformation")
    %>
  2. 按一下
    [View]
    功能表上的
    [View in Browser]

  3. 出現儲存檔案的提示訊息時,請按一下
    [OK]
    。瀏覽器會顯示變數中的資訊。

如何使用 Application 變數

請將
Application
物件想成一個用來儲存 ASP 應用程式所有網頁之可用資訊的通用容器。您可以在
Application
物件中儲存變數與物件參考。
Application
物件會在應用程式的第一個網頁被要求時起始,並且直到 Web 服務關閉之前都可以使用。


若要演練如何在 ASP 網頁中使用
Application
物件,請執行下列步驟:
  1. 在您先前於 Visual InterDev 中所建立之 ASP 網頁的 <BODY> </BODY> 標記之間貼上下面程式碼:
    <%
    'Store information in an Application variable.
    Application("myvalue") = "something"

    'Display the contents of the Application variable.
    Response.Write Application("myvalue")
    %>
  2. 按一下
    [View]
    功能表上的
    [View in Browser]

  3. 出現儲存檔案的提示訊息時,請按一下
    [OK]
    。瀏覽器會顯示變數中的資訊。

Application_OnStart 與 Session_OnStart 事件

您可以使用
Application_OnStart

Session_OnStart
事件來初始化狀態。若要執行此項作業,請設定通用於應用程式或某特定使用者的變數。當第一個使用者存取應用程式中的某個檔案時,就會觸發
Application_OnStart
事件。此事件是用來初始化任何應用程式層級的通用變數。當使用者第一次開始啟用工作階段時,就會觸發
Session_OnStart
事件。此事件是用來初始化專用於使用者的資訊。


Application_OnEnd 與 Session_OnEnd 事件

當目前的工作階段逾時,就會發生
Session_OnEnd
事件。根據預設,這是最後一次向應用程式要求某個網頁之後的 20 分鐘。若要變更此預設的逾時值,您可以設定
Session.Timeout
屬性,或是編輯登錄。


您可以使用
Application_OnEnd
事件來清除所有通用物件與變數。不過,目前的問題是要等到 Web 伺服器停止時才會觸發此事件。ASP 的修訂版似乎有可能會指定一旦發生了最後一個
Session_OnEnd
事件 (亦即,最後一個工作階段結束了而且此應用程式目前沒有任何使用者),此時就會觸發
Application_OnEnd
事件。


疑難排解

若要使用Application

Session
變數,用戶端必須在他們的 Web 瀏覽器中啟用 Cookies,這在框架組中的共用框架之間或橫跨多個瀏覽器執行個體時是不可靠的。


只有當用戶端擷取某個 ASP 網頁時才會觸發Session

Application
事件;如果您是要求應用程式中的某個 HTML 網頁就不會觸發這兩種事件。因此,如果您有其他的伺服器端應用程式,例如「Internet 伺服器應用程式發展介面」(ISAPI,Internet Server Application Programming Interface) 或「通用閘道介面」(CGI) 指令碼,請確認這些應用程式不需依靠 ASP 網頁中特定事件的發生才能運作。否則,ISAPI 或 CGI 指令碼可能會失敗 (當機) 並造成 Web 伺服器停止回應 (無回應)。


此方法可儲存 Web 伺服器上的資訊。這樣會以兩種方式降低可調適性:
Session

Application
變數會使用伺服器上的資源並且無法在完全負載平衡的 Web Farm 上使用。


參考

如需詳細資訊,請參閱下面的 Microsoft 網站:
如需詳細資訊,請按一下下面的文件編號,檢視 Microsoft Knowledge Base 中的文件:

281298 PRB: Session Variables Do Not Persist When Application Contains Empty Global.asa
230149 HOWTO: Access Session and Application Variables from Within a Visual Basic Component


本文件是根據 Microsoft Knowledgebase 文件編號 Q300883 翻譯的。若要參考原始英文文件內容,請至以下網址: