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>