Global.asa 文件是一個可選的文件,它可包含被 ASP 應用程序中每個頁面訪問的對象、變量和方法的聲明。
所有合法的浏覽器腳本(JavaScript、VBScript、JScript、PerlScript 等等)都能在 Global.asa 中使用。
Global.asa 文件只能包含下列內容:
注釋:Global.asa 文件必須存放在 ASP 應用程序的根目錄中,而且每個應用程序只能有一個 Global.asa 文件。
在 Global.asa 中,您可以告訴 application 和 session 對象當 application/session 開始時做什麼,當 application/session 結束時做什麼。完成這項任務的代碼被放置在事件句柄中。Global.asa 文件能包含四種類型的事件:
Application_OnStart - 此事件會在第一個用戶調用 ASP 應用程序的第一個頁面時發生。此事件會在 Web 服務器重啟或者 Global.asa 文件被編輯之後發生。"Session_OnStart" 事件會在此事件發生之後立即發生。Session_OnStart - 此事件會在每當新用戶請求他(她)在 ASP 應用程序中的第一個頁面時發生。
Session_OnEnd - 此事件會在每當用戶結束 session 時發生。在規定的時間(默認的時間為 20 分鐘)內如果用戶沒有請求任何頁面,用戶 session 就會結束。
Application_OnEnd - 此事件會在最後一個用戶結束其 session 之後發生。典型的情況是,此事件會在 Web 服務器停止時發生。這個子程序用於在應用程序停止後清除設置,比如刪除記錄或者向文本文件中寫入信息。
一個 Global.asa 文件可能如下所示:
<script language="vbscript" runat="server">注釋:由於我們無法在 Global.asa 文件中使用 ASP 的腳本分隔符 (<% 和 %>) 插入腳本,我們需要把子例程放置在 HTML 的 <script> 元素內部。
可通過使用 <object> 標簽在 Global.asa 文件中創建帶有 session 或者 application 作用域的對象。
注釋:<object> 標簽應位於 <script> 標簽外部!
ProgID 或 ClassID 必需被指定。
ClassID 為 COM 類對象指定一個唯一的 id。ProgID 或 ClassID 必需被指定。
第一個實例通過使用 ProgID 參數創建了一個名為 "MyAd" 的 session 作用域對象:
<object runat="server" scope="session" id="MyAd" progid="MSWC.AdRotator">第二個實例通過使用 ClassID 參數創建了一個名為 "MyConnection" 的 application 作用域對象:
<object runat="server" scope="application" id="MyConnection"在 Global.asa 文件中聲明的對象可被應用程序中的任何腳本使用:
GLOBAL.ASA:TypeLibrary(類型庫)是一個容器,其中裝有對應於 COM 對象的 DLL 文件。通過在 Global.asa 文件中包含對 TypeLibrary 的調用,可以訪問 COM 對象的常量,同時 ASP 代碼也能更好地報告錯誤。如果您的 Web 應用程序依賴於已在類型庫中聲明的數據類型的 COM 對象,您可以在 Global.asa 中對類型庫進行聲明。
file 參數或者 uuid 參數,兩者缺一不可。
uuid 規定了類型庫的唯一的標識符。file 參數或者 uuid 參數,兩者缺一不可。
version 可選。用於選擇版本。如果沒有找到需要的版本,將使用最接近的版本。 lcid 可選。用於類型庫的地區標識符。服務器會返回以下的錯誤消息之一:
注釋:METADATA 標簽可出現在 Global.asa 文件中的任何位置(在 <script> 標簽的內外皆可)。然而,我們還是推薦將 METADATA 標簽放置於 Global.asa 文件的頂部。
關於可以在 Global.asa 文件中引用的內容的限定:
Global.asa 常用於初始化變量。
下面的實例演示了如何檢測訪客首次到達 Web 站點的確切時間。時間存儲在名為 "started" 的 Session 對象中,並且 "started" 變量的值可被應用程序中的任何 ASP 頁面訪問:
<script language="vbscript" runat="server">Global.asa 也可用於控制頁面訪問。
下面的實例演示了如何把每個新的訪客重定向到另一個頁面,在這個例子中會定向到一個名為 "newpage.asp" 的頁面:
<script language="vbscript" runat="server">您可以在 Global.asa 文件中包含函數。
在下面的實例中,當 Web 服務器啟動時,Application_OnStart 子例程也會啟動。然後,Application_OnStart 子例程會調用另一個名為 "getcustomers" 的子例程。"getcustomers" 子例程會打開一個數據庫,然後從 "customers" 表中取回一個記錄集。此記錄集會賦值給一個數組,在不查詢數據庫的情況下,任何 ASP 頁面都能夠訪問這個數組:
<script language="vbscript" runat="server">在這個實例中,我們將創建一個計算當前訪客數量的 Global.asa 文件。
Global.asa 文件:
<script language="vbscript" runat="server">在 ASP 文件中,顯示當前訪客的數量:
<!DOCTYPE html>