選單
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

ASP Global.asa 檔案


Global.asa 檔案

Global.asa 檔案是一個可選檔案,其中可以包含 ASP 應用程式中所有頁面都可以訪問的物件、變數和方法的宣告。

可以在 Global.asa 中使用所有有效的瀏覽器指令碼(JavaScript、VBScript、JScript、PerlScript 等)。

Global.asa 檔案只能包含以下內容:

  • Application 事件
  • Session 事件
  • <object> 宣告
  • TypeLibrary 宣告
  • #include 指令

注意: Global.asa 檔案必須儲存在 ASP 應用程式的根目錄中,並且每個應用程式只能有一個 Global.asa 檔案。


Global.asa 中的事件

在 Global.asa 中,您可以告知應用程式和會話物件在應用程式/會話開始時做什麼,以及在應用程式/會話結束時做什麼。程式碼放置在事件處理程式中。Global.asa 檔案可以包含四種類型的事件:

Application_OnStart - 當第一個使用者訪問 ASP 應用程式的第一個頁面時發生。在 Web 伺服器重啟後或 Global.asa 檔案編輯後發生此事件。“Session_OnStart”事件緊隨此事件之後發生。

Session_OnStart - 每次新使用者請求 ASP 應用程式中的第一個頁面時都會發生此事件。

Session_OnEnd - 每次使用者結束會話時都會發生此事件。在使用者未在指定時間(預設為 20 分鐘)內請求頁面後,使用者會話即結束。

Application_OnEnd - 在最後一個使用者結束會話後發生此事件。通常,在 Web 伺服器停止時會發生此事件。此過程用於在應用程式停止後清理設定,例如刪除記錄或將資訊寫入文字檔案。

Global.asa 檔案可能看起來像這樣:

<script language="vbscript" runat="server">

sub Application_OnStart
'some code
end sub

sub Application_OnEnd
'some code
end sub

sub Session_OnStart
'some code
end sub

sub Session_OnEnd
'some code
end sub

</script>

注意: 由於我們無法使用 ASP 指令碼分隔符(<% 和 %>)在 Global.asa 檔案中插入指令碼,因此我們將子例程放在 HTML <script> 元素內。



<object> 宣告

可以透過使用 <object> 標籤在 Global.asa 中建立具有會話或應用程式範圍的物件。

注意: <object> 標籤應放在 <script> 標籤之外!

語法

<object runat="server" scope="scope" id="id" {progid="progID"|classid="classID"}>
....
</object>

引數 描述
scope 設定物件的範圍(Session 或 Application)
id 為物件指定一個唯一的 ID
ProgID 與類 ID 關聯的 ID。ProgID 的格式為 [Vendor.]Component[.Version]

必須指定 ProgID 或 ClassID 中的一個。

ClassID 為 COM 類物件指定一個唯一的 ID。

必須指定 ProgID 或 ClassID 中的一個。

示例

第一個示例使用 ProgID 引數建立了一個會話範圍的物件“MyAd”。

<object runat="server" scope="session" id="MyAd" progid="MSWC.AdRotator">
</object>

第二個示例使用 ClassID 引數建立了一個應用程式範圍的物件“MyConnection”。

<object runat="server" scope="application" id="MyConnection"
classid="Clsid:8AD3067A-B3FC-11CF-A560-00A0C9081C21">
</object>

在 Global.asa 檔案中宣告的物件可被應用程式中的任何指令碼使用。

GLOBAL.ASA

<object runat="server" scope="session" id="MyAd" progid="MSWC.AdRotator">
</object>

您可以從 ASP 應用程式中的任何頁面引用物件“MyAd”。

SOME .ASP FILE

<%=MyAd.GetAdvertisement("/banners/adrot.txt")%>

TypeLibrary 宣告

TypeLibrary 是一個 DLL 檔案內容的容器,該檔案對應一個 COM 物件。透過在 Global.asa 檔案中包含對 TypeLibrary 的呼叫,可以訪問 COM 物件中的常量,並且 ASP 程式碼可以更好地報告錯誤。如果您的 Web 應用程式依賴於已在型別庫中聲明瞭資料型別的 COM 物件,則可以在 Global.asa 中宣告型別庫。

語法

<!--METADATA TYPE="TypeLib"
file="filename" uuid="id" version="number" lcid="localeid"
-->

引數 描述
file 指定型別庫的絕對路徑。

file 引數或 uuid 引數是必需的。

uuid 指定型別庫的唯一識別符號。

file 引數或 uuid 引數是必需的。

version 可選。用於選擇版本。如果找不到請求的版本,則使用最新版本。
lcid 可選。要用於型別庫的區域設定識別符號。

錯誤值

伺服器可以返回以下錯誤訊息之一:

錯誤程式碼 描述
ASP 0222 無效的型別庫規範
ASP 0223 找不到型別庫
ASP 0224 無法載入型別庫
ASP 0225 無法包裝型別庫

注意: METADATA 標籤可以出現在 Global.asa 檔案的任何位置(在 <script> 標籤內外)。但是,建議將 METADATA 標籤放在 Global.asa 檔案的頂部附近。


限制

有關可以在 Global.asa 檔案中包含的內容的限制

  • 您不能顯示在 Global.asa 檔案中編寫的文字。此檔案無法顯示資訊。
  • 您只能在 Application_OnStart 和 Application_OnEnd 子例程中使用 Server 和 Application 物件。在 Session_OnEnd 子例程中,您可以使用 Server、Application 和 Session 物件。在 Session_OnStart 子例程中,您可以使用任何內建物件。

如何使用子例程

Global.asa 通常用於初始化變數。

下面的示例顯示瞭如何檢測訪問者首次訪問網站的確切時間。時間儲存在名為“started”的 Session 變數中,並且可以在應用程式中的任何 ASP 頁面訪問“started”變數的值。

<script language="vbscript" runat="server">
sub Session_OnStart
Session("started")=now()
end sub
</script>

Global.asa 還可用於控制頁面訪問。

下面的示例顯示瞭如何將每個新訪問者重定向到另一個頁面,在本例中重定向到名為“newpage.asp”的頁面。

<script language="vbscript" runat="server">
sub Session_OnStart
Response.Redirect("newpage.asp")
end sub
</script>

您還可以在 Global.asa 檔案中包含函式。

在下面的示例中,當 Web 伺服器啟動時,Application_OnStart 子例程會發生。然後 Application_OnStart 子例程呼叫另一個名為“getcustomers”的子例程。“getcustomers”子例程開啟資料庫並從“customers”表中檢索記錄集。記錄集被分配給一個數組,該陣列可以在任何 ASP 頁面中訪問,而無需查詢資料庫。

<script language="vbscript" runat="server">

sub Application_OnStart
getcustomers
end sub

sub getcustomers
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open "c:/webdata/northwind.mdb"
set rs=conn.execute("select name from customers")
Application("customers")=rs.GetRows
rs.Close
conn.Close
end sub

</script>

Global.asa 示例

在此示例中,我們將建立一個 Global.asa 檔案來計算當前訪問者的數量。

  • Application_OnStart 在伺服器啟動時將 Application 變數“visitors”設定為 0。
  • 每次新訪問者到達時,Session_OnStart 子例程會將“visitors”變數加一。
  • 每次觸發 Session_OnEnd 子例程時,它會從“visitors”中減一。

Global.asa 檔案

<script language="vbscript" runat="server">

Sub Application_OnStart
Application("visitors")=0
End Sub

Sub Session_OnStart
Application.Lock
Application("visitors")=Application("visitors")+1
Application.UnLock
End Sub

Sub Session_OnEnd
Application.Lock
Application("visitors")=Application("visitors")-1
Application.UnLock
End Sub

</script>

要在 ASP 檔案中顯示當前訪問者的數量:

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>現在有 <%response.write(Application("visitors"))%> 位線上!</p>
</body>
</html>

×

聯絡銷售

如果您想將 W3Schools 服務用於教育機構、團隊或企業,請傳送電子郵件給我們
sales@w3schools.com

報告錯誤

如果您想報告錯誤,或想提出建議,請傳送電子郵件給我們
help@w3schools.com

W3Schools 經過最佳化,旨在方便學習和培訓。示例可能經過簡化,以提高閱讀和學習體驗。教程、參考資料和示例會不斷審查,以避免錯誤,但我們無法保證所有內容的完全正確性。使用 W3Schools 即表示您已閱讀並接受我們的使用條款Cookie 和隱私政策

版權所有 1999-2024 Refsnes Data。保留所有權利。W3Schools 由 W3.CSS 提供支援