<object> 宣告、TypeLibrary 宣告、#include 指令<script runat="server"> 標籤內 (不可使用 <% %>)| 事件 | 觸發時機 |
|---|---|
| Application_OnStart | 第一位使用者首次請求頁面、Web 服務重啟、Global.asa 修改後 |
| Session_OnStart | 每位新使用者首次請求頁面 (緊接 Application_OnStart 後) |
| Session_OnEnd | Session 逾時 (預設 20 分鐘無活動) 或呼叫 Abandon |
| Application_OnEnd | 最後一位使用者 Session 結束、Web 服務停止 |
<script language="vbscript" runat="server">
Sub Application_OnStart
' 初始化應用程式層級資料、快取資料庫查詢結果等
End Sub
Sub Application_OnEnd
' 清理資源、寫入日誌、關閉連線
End Sub
Sub Session_OnStart
' 初始化使用者 Session 資料、記錄登入時間
End Sub
Sub Session_OnEnd
' 清理使用者資源、更新線上人數
End Sub
</script>
<object runat="server" scope="session" id="MyAd" progid="MSWC.AdRotator"></object>
<object runat="server" scope="application" id="MyConnection" classid="Clsid:8AD3067A-B3FC-11CF-A560-00A0C9081C21"></object>
參數說明:
scope:session 或 applicationid:物件唯一識別碼,供其他頁面直接引用progid / classid:二擇一指定 COM 元件宣告後,任何 ASP 頁面可直接使用 MyAd.GetAdvertisement(...)。
<!--METADATA TYPE="TypeLib"
file="C:\Path\To\MyLib.tlb"
uuid="{GUID}"
version="1.0"
lcid="0"
-->
引用後可在 ASP 程式碼直接使用類型庫中定義的常數,提升可讀性與錯誤偵測。
| 事件 | 可用內建物件 |
|---|---|
| Application_OnStart / Application_OnEnd | Server, Application |
| Session_OnEnd | Server, Application, Session |
| Session_OnStart | 所有內建物件 (Request, Response, Server, Application, Session 等) |
Sub Session_OnStart
Session("started") = Now()
End Sub
Sub Session_OnStart
Response.Redirect("newpage.asp")
End Sub
Sub Application_OnStart
Call GetCustomers()
End Sub
Sub GetCustomers()
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:/webdata/northwind.mdb"
Set rs = conn.Execute("SELECT name FROM customers")
Application("customers") = rs.GetRows() ' 二維陣列,避免重複查詢
rs.Close: conn.Close
End Sub
<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>
<p>目前線上: <%= Application("visitors") %> 人</p>
現代替代方案:ASP.NET 使用 Global.asax (Application_Start, Session_Start 等),ASP.NET Core 則在 Program.cs/Startup.cs 設定中介軟體與依賴注入,架構更模組化。