如何在 ASP 程式中使用會話和應用程式變數


摘要


此分步過程演示如何在活動伺服器頁 (ASP) 應用程式中設置檢索會話和應用程式物件的資訊。


工作階段和應用程式變數基礎知識

您可以使用應用程式工作階段 物件來存儲特定使用者(工作階段)或所有使用者( 應用程式)的全域值,而不是特定于頁面的值。

工作階段應用程式變數存儲在伺服器上。 然後,用戶端瀏覽器通過 Cookie 附加到工作階段。 因此,用戶端必須在瀏覽器中啟用 Cookie, 工作階段應用程式變數才能正常工作。

後續示例演示如何使用 Visual InterDev 建立工作階段應用程式變數。

建立視覺化的 InterDev Web 專案

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

  2. 「專案」功能表中,指向「新增 Web 項」,然後按一下
    Active Server Page
  3. 按一下「開啟」以接受新 ASP 頁的預設資訊。
現在,您向當前專案添加了 ASP 頁,接下來兩節中的 ASP 代碼示例將演示工作階段應用程式變數的使用。

如何使用工作階段變數

工作階段的強大功能來自這樣一個事實:即它可以存儲全域變數到該特定使用者;因此,每個使用者可以為該變數提供自己的單獨值。 使用者進入應用程式時不總是自動建立工作階段物件。 但是,儲存或存取工作階段物件中的變數, 建立工作階段物件並觸發 Session_OnStart事件。

要演示如何在 ASP 頁中使用工作階段物件,請按照以下步驟操作:
  1. 將以下代碼粘貼到您之前在視覺化互通版中創建的 ASP 頁面的<BODY></BODY>標簽:
    <%
    'Store information in a Session variable.
    Session("myInformation") = "somevalue"

    'Display the contents of the Session variable.
    Response.Write Session("myInformation")
    %>
  2. 「檢視」選單中按一下「在瀏覽器中檢視」
  3. 提示您是否確定要儲存檔案時,請按一下「確定」。 瀏覽器在變數中顯示資訊。

如何使用應用程式變數

應用程式物件視為可用於 ASP 應用程式所有頁面的資訊的全域容器。 您可以在應用程式物件中存儲變數和物件引用。 當請求應用程式的第一頁時,將具現化應用程式物件,並在 Web 服務關閉之前保持可用。

要演示如何 在 ASP 頁中使用應用程式物件,請按照以下步驟操作:
  1. 將以下代碼粘貼到您之前在視覺化互通版中創建的 ASP 頁面的<BODY></BODY>標簽:
    <%
    'Store information in an Application variable.
    Application("myvalue") = "something"

    'Display the contents of the Application variable.
    Response.Write Application("myvalue")
    %>
  2. 「檢視」功能表中按一下「在瀏覽器中檢視」
  3. 提示您是否確定要保存文件時,請按一下「確定」。 瀏覽器在變數中顯示資訊。

Application_OnStart and Session_OnStart 事件

您可以使用 Application_OnStartSession_OnStart 事件來初始化狀態。 為此,請為應用程式或特定使用者設置全域變數。 當第一個使用者訪問應用程式中的檔時, 將觸發 Application_OnStart 事件。 此事件用於初始化任何應用程式範圍的全域變數。 當使用者初次開機工作階段時, 將觸發 Session_OnStart 事件。 此事件用於初始化特定于使用者的資訊。

應用程式_結束和會話_結束事件

當當前會話超時時,將發生會話_OnEnd事件。 預設情況下,這是上次從應用程式請求頁面後 20 分鐘。 要更改此預設超時設置,可以設置 會話.超時屬性或編輯註冊表。

您可以使用 Application_OnEnd 事件清理所有全域物件和變數。 但是在目前的問題中,在 Web 服務器停止前可能不會觸發此事件。 ASP 的修訂似乎指定在上次 Session_OnEnd 發生後觸發Application_OnEnd 事件,即當最後一個會話結束時,並且沒有當前應用程式使用者時。

疑難排解

應用程式會話變數要求用戶端在其 Web 瀏覽器中啟用 Cookie,這在框架組中的共用幀之間或跨多個瀏覽器實例之間不可靠。

工作階段應用程式事件僅在用戶端檢索 ASP 頁時觸發;當請求應用程式中的 HTML 頁時不會觸發這些事件。 因此,如果您有其他伺服器端應用程式(如 Internet 伺服器應用程式開發介面 (ISAPI) 或通用閘道介面 (CGI) 腳本,請確保這些應用程式不依賴于在ASP 頁面。 否則,ISAPI 或 CGI 腳本可能會失敗(損毀),並導致 Web 服務器停止回應(掛起)。

此方法在 Web 服務器上存儲資訊。 這從兩個方面降低了延展性: 工作階段應用程式變數使用伺服器上的資源,不能在完全負載平衡的 Web 場上使用。

參考資料


如需詳細資訊,請參閱下列 Microsoft 網站: 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
281298 PRB: 當應用程式包含空的 Global.asa 時,會話變數不會持久化

230149如何從視覺化基本元件中存取工作階段和應用程式變數