ASP Global.asa ファイル


Global.asa ファイル

Global.asa ファイルはオプションのファイルで、ASP アプリケーションの各ページからアクセスされるオブジェクト、変数、メソッドの宣言を含めることができます。

すべての有効なブラウザ スクリプト (JavaScript、VBScript、JScript、PerlScript など) を Global.asa で使用できます。

Global.asa ファイルには次の内容のみを含めることができます。

  • Application イベント
  • Session イベント
  • <object> 宣言
  • TypeLibrary 宣言
  • #include ディレクティブ

注:Global.asa ファイルは ASP アプリケーションのルート ディレクトリに配置する必要があり、各アプリケーションに配置できる Global.asa ファイルは 1 つだけです。


Global.asa のイベント

Global.asa では、application オブジェクトと session オブジェクトに対して、application/session の開始時に行う処理と、application/session の終了時に行う処理を指定できます。このタスクを実行するコードはイベント ハンドラ内に配置されます。Global.asa ファイルには、次の 4 種類のイベントを含めることができます。

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>

注:Global.asa ファイルでは ASP のスクリプト区切り記号 (<% と %>) を使用してスクリプトを挿入できないため、サブルーチンを HTML の <script> 要素の内部に配置する必要があります。


<object> 宣言

<object> タグを使用して、Global.asa ファイル内に session または application スコープを持つオブジェクトを作成できます。

注:<object> タグは <script> タグの外側に配置する必要があります。

構文

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

パラメーター 説明
scope オブジェクトのスコープ (Session または Application) を設定します。
id オブジェクトに一意の ID を指定します。
ProgID ClassID に関連付けられた ID。ProgID の形式は [Vendor.]Component[.Version] です。

ProgID または ClassID のいずれかを指定する必要があります。

ClassID COM クラス オブジェクトに一意の ID を指定します。

ProgID または ClassID のいずれかを指定する必要があります。

例

最初の例では、ProgID パラメーターを使用して、"MyAd" という名前の session スコープ オブジェクトを作成しています。

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

2 番目の例では、ClassID パラメーターを使用して、"MyConnection" という名前の application スコープ オブジェクトを作成しています。

<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" オブジェクトを参照できます。

ある .ASP ファイル:

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


TypeLibrary 宣言

TypeLibrary (タイプ ライブラリ) は、COM オブジェクトに対応する DLL ファイルが格納されたコンテナーです。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 は変数の初期化によく使用されます。

次の例は、訪問者が Web サイトに初めて到達した正確な時刻を検出する方法を示しています。時刻は "started" という名前の Session オブジェクトに格納され、"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 ファイルに関数を含めることができます。

次の例では、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" に 1 を加算します。
  • Session_OnEnd サブルーチンがトリガーされるたびに、このサブルーチンは変数 "visitors" から 1 を減算します。

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>

その他の拡張