Global.asa 文件是一個可選的文件,它可包含被 ASP 應(yīng)用程序中每個頁面訪問的對象、變量和方法的聲明。
所有合法的瀏覽器腳本(JavaScript、VBScript、JScript、PerlScript 等等)都能在 Global.asa 中使用。
Global.asa 文件只能包含下列內(nèi)容:
注釋:Global.asa 文件必須存放在 ASP 應(yīng)用程序的根目錄中,而且每個應(yīng)用程序只能有一個 Global.asa 文件。
在 Global.asa 中,您可以告訴 application 和 session 對象當(dāng) application/session 開始時做什么,當(dāng) application/session 結(jié)束時做什么。完成這項任務(wù)的代碼被放置在事件句柄中。Global.asa 文件能包含四種類型的事件:
Application_OnStart- 此事件會在第一個用戶調(diào)用 ASP 應(yīng)用程序的第一個頁面時發(fā)生。此事件會在 Web 服務(wù)器重啟或者 Global.asa 文件被編輯之后發(fā)生。"Session_OnStart" 事件會在此事件發(fā)生之后立即發(fā)生。
Session_OnStart - 此事件會在每當(dāng)新用戶請求他(她)在 ASP 應(yīng)用程序中的第一個頁面時發(fā)生。
Session_OnEnd - 此事件會在每當(dāng)用戶結(jié)束 session 時發(fā)生。在規(guī)定的時間(默認的時間為 20 分鐘)內(nèi)如果用戶沒有請求任何頁面,用戶 session 就會結(jié)束。
Application_OnEnd - 此事件會在最后一個用戶結(jié)束其 session 之后發(fā)生。典型的情況是,此事件會在 Web 服務(wù)器停止時發(fā)生。這個子程序用于在應(yīng)用程序停止后清除設(shè)置,比如刪除記錄或者向文本文件中寫入信息。
一個 Global.asa 文件可能如下所示:
注釋:由于我們無法在 Global.asa 文件中使用 ASP 的腳本分隔符 (<% 和 %>) 插入腳本,我們需要把子例程放置在 HTML 的 <script> 元素內(nèi)部。
可通過使用 <object> 標簽在 Global.asa 文件中創(chuàng)建帶有 session 或者 application 作用域的對象。
注釋:<object> 標簽應(yīng)位于 <script> 標簽外部!
參數(shù) | 描述 |
---|---|
scope | 設(shè)置對象(Session 或 Application)的作用域。 |
id | 為對象指定一個唯一的 id。 |
ProgID | 與 ClassID 關(guān)聯(lián)的 id。ProgID 的格式是:[Vendor.]Component[.Version]。 ProgID 或 ClassID 必需被指定。 |
ClassID | 為 COM 類對象指定一個唯一的 id。 ProgID 或 ClassID 必需被指定。 |
第一個實例通過使用 ProgID 參數(shù)創(chuàng)建了一個名為 "MyAd" 的 session 作用域?qū)ο螅a如下:
第二個實例通過使用 ClassID 參數(shù)創(chuàng)建了一個名為 "MyConnection" 的 application 作用域?qū)ο?,代碼如下:
在 Global.asa 文件中聲明的對象可被應(yīng)用程序中的任何腳本使用,代碼如下:
TypeLibrary(類型庫)是一個容器,其中裝有對應(yīng)于 COM 對象的 DLL 文件。通過在 Global.asa 文件中包含對 TypeLibrary 的調(diào)用,可以訪問 COM 對象的常量,同時 ASP 代碼也能更好地報告錯誤。如果您的 Web 應(yīng)用程序依賴于已在類型庫中聲明的數(shù)據(jù)類型的 COM 對象,您可以在 Global.asa 中對類型庫進行聲明。
參數(shù) | 描述 |
---|---|
file | 規(guī)定指向類型庫的絕對路徑。 file 參數(shù)或者 uuid 參數(shù),兩者缺一不可。 |
uuid | 規(guī)定了類型庫的唯一的標識符。 file 參數(shù)或者 uuid 參數(shù),兩者缺一不可。 |
version | 可選。用于選擇版本。如果沒有找到需要的版本,將使用最接近的版本。 |
lcid | 可選。用于類型庫的地區(qū)標識符。 |
服務(wù)器會返回以下的錯誤消息之一:
錯誤代碼 | 描述 |
---|---|
ASP 0222 | 無效的類型庫規(guī)范 |
ASP 0223 | 沒有找到類型庫 |
ASP 0224 | 無法加載類型庫 |
ASP 0225 | 無法包裝類型庫 |
注釋:METADATA 標簽可出現(xiàn)在 Global.asa 文件中的任何位置(在 <script> 標簽的內(nèi)外皆可)。然而,我們還是推薦將 METADATA 標簽放置于 Global.asa 文件的頂部。
關(guān)于可以在 Global.asa 文件中引用的內(nèi)容的限定:
Global.asa 常用于初始化變量。
下面的實例演示了如何檢測訪客首次到達 Web 站點的確切時間。時間存儲在名為 "started" 的 Session 對象中,并且 "started" 變量的值可被應(yīng)用程序中的任何 ASP 頁面訪問:
Global.asa 也可用于控制頁面訪問。
下面的實例演示了如何把每個新的訪客重定向到另一個頁面,在這個例子中會定向到一個名為 "newpage.asp" 的頁面:
您可以在 Global.asa 文件中包含函數(shù)。
在下面的實例中,當(dāng) Web 服務(wù)器啟動時,Application_OnStart 子例程也會啟動。然后,Application_OnStart 子例程會調(diào)用另一個名為 "getcustomers" 的子例程。"getcustomers" 子例程會打開一個數(shù)據(jù)庫,然后從 "customers" 表中取回一個記錄集。此記錄集會賦值給一個數(shù)組,在不查詢數(shù)據(jù)庫的情況下,任何 ASP 頁面都能夠訪問這個數(shù)組:
在這個實例中,我們將創(chuàng)建一個計算當(dāng)前訪客數(shù)量的 Global.asa 文件。
Global.asa 文件,代碼如下:
在 ASP 文件中,顯示當(dāng)前訪客的數(shù)量,代碼如下:
更多建議: