ASP Global.asa



Global.asa ファイル

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

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

Global.asa ファイルには次のコンテンツのみを含めることができます:

  • アプリケーション イベント

  • セッション イベント

  • <object>

  • TypeLibrary 宣言

  • #includeディレクティブ

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


Global.asa のイベント

Global.asa では、アプリケーション/セッションの開始時に何を行うか、およびアプリケーション/セッションが終了時に何を行うかをアプリケーションとセッション オブジェクトに指示できます。このタスクを実行するコードはイベント ハンドラーに配置されます。 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
'いくつかのコード
end sub

sub Application_OnEnd
'コード
end sub

sub Session_OnStart
'いくつかのコード
end sub

sub Session_OnEnd
'いくつかのコード
end sub

</script>

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


<object> 宣言

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

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

構文

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

パラメータ説明
スコープを設定しますオブジェクト (セッションまたはアプリケーション) のスコープ。
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>

2 番目のインスタンスは、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>

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

.ASP ファイル:

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


TypeLibrary 宣言

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

構文

<!--METADATA TYPE="TypeLib"
file="ファイル名" uuid="id" バージョン="番号" lcid="localeid"
-->

パラメータ説明
file タイプ ライブラリへの絶対パスを指定します。

file パラメータまたは uuid パラメータ、両方とも必須です。

uuid は、タイプ ライブラリの一意の識別子を指定します。

file パラメータまたは uuid パラメータ、両方とも必須です。

バージョンはオプションです。バージョンを選択するために使用します。必要なバージョンが見つからない場合は、最も近いバージョンが使用されます。
lcidオプション。タイプ ライブラリに使用されるロケール識別子。

エラー値

サーバーは次のいずれかのエラーメッセージを返します:

エラーコード説明
ASP 0222タイプライブラリの指定が無効です
ASP 0223 タイプが見つからないライブラリ
ASP 0224タイプライブラリをロードできません
ASP 0225タイプライブラリをラップできません

注: METADATA タグは、Global.asa ファイル内のどこにでも (<script> タグの内側または外側) に表示できます。ただし、METADATA タグを Global.asa ファイルの先頭に配置することをお勧めします。


制限事項

Global.asa ファイルで参照できるものの制限:

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

  • サーバー オブジェクトとアプリケーション オブジェクトは、Application_OnStart および Application_OnEnd サブルーチンでのみ使用できます。 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("顧客から名前を選択")
Application("顧客")=rs.GetRows
rs.Close
conn.Close
end sub

</script>


Global.asa の例

この例では、現在の訪問者数を計算する Global.asa ファイルを作成します。

  • サーバーが起動すると、Application_OnStart はアプリケーション変数「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("訪問者")=Application("訪問者")+1
Application.UnLock
End Sub

Sub Session_OnEnd
Application.Lock
Application("訪問者")=Application("訪問者")-1
Application .UnLock
End Sub

</script>

ASP ファイルで、現在の訪問者数を表示します:

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p><%response.write(Application("visitors"))%>があります; オンライン中!</p>
</body>
</html>