ASP Global.asa ファイル

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

Global.asaファイル

Global.asaファイルはオプションのファイルであり、ASPアプリケーションの各ページからアクセスできるオブジェクト、変数、メソッドの宣言を含むことができます。すべての合法なブラウザスクリプトはGlobal.asaで使用できます。

Global.asaファイルには以下の内容を含むことができます:

  • Applicationイベント
  • Sessionイベント
  • <object> 声明
  • TypeLibrary 声明
  • #include命令

コメント:Global.asaファイルはASPアプリケーションのルートディレクトリに保存されなければなりません、かつ各アプリケーションごとに1つのGlobal.asaファイルのみが存在できます。

Global.asaのイベント

Global.asa 内で、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> 声明

Global.asa ファイル内で、セッションまたはアプリケーション範囲を持つオブジェクトを作成するために <object> タグを使用できます。

コメント:<object> タグは <script> タグの外に位置するべきです。

文法:

<object runat="server" scope="scope" id="id"
{progid="progID"|classid="classID"}>
....
</object>
パラメータ 説明
scope オブジェクトの範囲(セッションまたはアプリケーション)を設定します。
id オブジェクトにユニークな ID を指定します。
ProgID

ClassID に関連付けられた 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>

この「MyAd」オブジェクトは、ASP アプリケーションの任意のページから参照できます:

ある .ASP ファイル:

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

TypeLibrary 声明

TypeLibrary (タイプライブラリ)は、COM オブジェクトに対応する DLL ファイルを含むコンテナです。Global.asa に TypeLibrary の呼び出しを含めることで、COM オブジェクトの定数にアクセスし、ASP コードはエラーをより良い方法で報告できます。もし、既にタイプライブラリに宣言されたデータタイプの COM オブジェクトに依存するアプリケーションがある場合、Global.asa でタイプライブラリを宣言することができます。

文法:

<!--METADATA TYPE="TypeLib"
file="filename"
uuid="typelibraryuuid"
version="versionnumber"
lcid="localeid"
-->
パラメータ 説明
file タイプライブラリへの絶対パスを定義します。パラメータ file または uuid、どちらか一方が必須です。
uuid タイプライブラリに対するユニークな識別子を定義します。パラメータ file または uuid、どちらか一方が必須です。
version オプション。バージョンを選択するために使用されます。指定されたバージョンが見つからない場合、最も近いバージョンが使用されます。
lcid オプション。タイプライブラリの地域識別子として使用されます。

エラーメッセージ

サーバーは以下のエラーメッセージのうちの一つを返します:

エラー コード 説明
ASP 0222 無効なタイプライブラリ指定
ASP 0223 Type library not found
ASP 0224 Type library cannot be loaded
ASP 0225 Type library cannot be wrapped

コメント:METADATAタグはGlobal.asaファイルのどこにでも配置できます(<script>タグの内外を問いません)。ただし、Global.asaファイルのトップにMETADATAタグを配置することをお勧めします。

制限

Global.asaファイルで参照できる内容の制限について:

Global.asaファイル内のテキストを表示することはできません。このファイルは情報を表示できません。

ServerおよびApplicationオブジェクトはApplication_OnStartおよびApplication_OnEndサブルーチンでのみ使用できます。Session_OnEndサブルーチンではServer、Application、Sessionオブジェクトを使用できます。Session_OnStartサブルーチンでは、どんな内建オブジェクトも使用できます。

サブルーチンの使用方法

Global.asaは通常、変数の初期化に使用されます。

以下の例では、訪問者が初めてサイトに到着した正確な時間を検出する方法を示しています。時間は「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ファイルは、現在のユーザーの数を表示します:

<html>
<head>
</head>
<body>
<p>今オンラインで <%response.write(Application("visitors"))%> 人います!</p>
</body>
</html>