最新的Web開發教程
 

ASP Global.asa文件


Global.asa文件

Global.asa文件是一個可選文件,可以包含可以通過每個頁面中的ASP應用程序訪問的對象,變量和方法的聲明。

所有有效的瀏覽器腳本(JavaScript, VBScript, JScript, PerlScript, etc.)可用於在Global.asa中。

Global.asa文件只能包含以下內容:

  • 應用程序事件
  • 會話事件
  • <對象>聲明
  • TypeLibrary聲明
  • #include指令

Note: Global.asa文件必須存放在ASP應用程序的根目錄下,每個應用程序只能有一個Global.asa文件。


Global.asa中的事件

在Global.asa中你可以告訴Application和Session對象怎麼做時,應用/會話開始,什麼時,應用/會話結束做。 這樣做的代碼放置在事件處理程序。 Global.asa文件可以包含四種類型的事件:

Application_OnStart -當第一個用戶呼叫的第一頁中的ASP應用程序時發生。 Web服務器重新啟動或Global.asa文件編輯後後發生此事件。 該"Session_OnStart"事件此事件之後立即發生。

Session_OnStart -此事件發生每當一個新的用戶在ASP應用程序請求他或她的第一頁。

Session_OnEnd -此事件發生每當用戶結束會話。 頁面未被要求用戶指定的時間後,用戶會話結束(by default this is 20 minutes)

Application_OnEnd -最後一個用戶已經結束了會議後發生此事件。 通常情況下,當Web服務器停止該事件發生。 這個程序是用來設置清理後停止的應用,如刪除記錄或將信息寫入到文本文件。

一個Global.asa文件可能看起來是這樣的:

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

sub Application_OnStart
' Note:由於我們不能使用ASP腳本分隔符(<% and %>)在Global.asa文件中插入腳本,我們把子程序的HTML裡面<script>元素。


的<object>聲明

有可能通過使用該創建Global.asa中與會話或應用範圍對象<object>標記。

Note:在<object>標籤應該是外面<script>標記!

句法

<object runat="server" scope=" 參數 描述 scope 設置對象的範圍(either Session or Application) id 指定一個唯一的ID為對象 ProgID 與類ID相關的ID。 對於程序id的格式為[商]成分[.Version]

無論ProgID還是ClassID都必須指定。

ClassID 指定COM類對象的唯一標識。

無論ProgID還是ClassID都必須指定。

例子

第一個示例創建名為會話範圍的目的"MyAd"通過使用ProgID參數:

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

第二個示例創建的命名的應用範圍的對象"MyConnection"使用的ClassID參數:

<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>

You could reference the object "MyAd" from any page in the ASP application:

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=" 參數 描述 file 指定類型庫的絕對路徑。

無論是文件參數或UUID參數是必需的

uuid 指定類型庫的唯一標識符。

無論是文件參數或UUID參數是必需的

version 可選的。 用於選擇版本。 如果沒有找到所請求的版本,那麼最新版本使用 lcid 可選的。 用於類型庫的區域設置標識符

錯誤值

該服務器可以返回以下錯誤消息之一:

錯誤代碼 描述
ASP 0222 無效的類型庫規範
ASP 0223 類型庫未找到
ASP 0224 類型庫不能加載
ASP 0225 類型庫不能被包裝

Note:元數據標籤可以在Global.asa文件中出現的任何地方(both inside and outside <script> tags) 但是,建議METADATA標籤旁邊顯示Global.asa文件的頂部。


限制

什麼,你可以在Global.asa文件中包括限制:

  • 不能顯示寫在Global.asa文件的文本。 此文件無法顯示信息
  • 您只能在Application_OnStart和Application_OnEnd子程序使用服務器和應用程序對象。 在子程序的Session_OnEnd,您可以使用服務器,應用程序和Session對象。 在子程序的Session_OnStart你可以使用任何內置對象

如何使用子程序

Global.asa中經常被用來初始化變量。

下面的例子演示了如何檢測的準確時間訪問者第一次來到一個網站。 時間存儲在一個名為會話變量"started" ,以及價值的"started"變量可以從應用程序中的任何ASP頁面訪問:

<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文件的功能。

在Application_OnStart副程式下面的例子在Web服務器啟動時發生。 然後,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設置應用程序變量"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>There are <%response.write(Application("visitors"))%> online now!</p>
</body>
</html>