ASPGlobal.asaファイル
Global.asaファイル
Global.asaファイルは、ASPアプリケーションのすべてのページからアクセスできるオブジェクト、変数、およびメソッドの宣言を含むことができるオプションのファイルです。
すべての有効なブラウザスクリプト(JavaScript、VBScript、JScript、PerlScriptなど)をGlobal.asa内で使用できます。
Global.asaファイルには、次のもののみを含めることができます。
- アプリケーションイベント
- セッションイベント
- <オブジェクト>宣言
- TypeLibrary宣言
- #includeディレクティブ
注: Global.asaファイルはASPアプリケーションのルートディレクトリに保存する必要があり、各アプリケーションは1つのGlobal.asaファイルのみを持つことができます。
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
'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>
注: ASPスクリプト区切り文字(<%および%>)を使用してGlobal.asaファイルにスクリプトを挿入することはできないため、HTMLの<script>要素内にサブルーチンを配置します。
<オブジェクト>宣言
<object>タグを使用すると、Global.asaでセッションまたはアプリケーションスコープを持つオブジェクトを作成できます。
注: <object>タグは<script>タグの外側にある必要があります!
構文
<object runat="server" scope="scope" id="id"
{progid="progID"|classid="classID"}>
....
</object>
Parameter | Description |
---|---|
scope | Sets the scope of the object (either Session or Application) |
id | Specifies a unique id for the object |
ProgID | An id associated with a class id. The format for ProgID is [Vendor.]Component[.Version]
Either ProgID or ClassID must be specified. |
ClassID | Specifies a unique id for a COM class object. Either ProgID or ClassID must be specified. |
例
最初の例では、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>
You could reference the object "MyAd" from any page in the ASP application:
SOME .ASP FILE:
<%=MyAd.GetAdvertisement("/banners/adrot.txt")%>
TypeLibrary宣言
TypeLibraryは、COMオブジェクトに対応するDLLファイルの内容のコンテナです。TypeLibraryへの呼び出しをGlobal.asaファイルに含めることで、COMオブジェクトの定数にアクセスでき、ASPコードでエラーをより適切に報告できます。Webアプリケーションが型ライブラリでデータ型を宣言したCOMオブジェクトに依存している場合は、Global.asaで型ライブラリを宣言できます。
構文
<!--METADATA TYPE="TypeLib"
file="filename"
uuid="id"
version="number"
lcid="localeid"
-->
Parameter | Description |
---|---|
file | Specifies an absolute path to a type library.
Either the file parameter or the uuid parameter is required |
uuid | Specifies a unique identifier for the type library.
Either the file parameter or the uuid parameter is required |
version | Optional. Used for selecting version. If the requested version is not found, then the most recent version is used |
lcid | Optional. The locale identifier to be used for the type library |
エラー値
サーバーは、次のエラーメッセージのいずれかを返す可能性があります。
Error Code | Description |
---|---|
ASP 0222 | Invalid type library specification |
ASP 0223 | Type library not found |
ASP 0224 | Type library cannot be loaded |
ASP 0225 | Type library cannot be wrapped |
注: METADATAタグは、Global.asaファイルのどこにでも表示できます(<script>タグの内側と外側の両方)。ただし、METADATAタグをGlobal.asaファイルの先頭近くに表示することをお勧めします。
制限
Global.asaファイルに含めることができるものに関する制限:
- Global.asaファイルに書き込まれたテキストを表示することはできません。このファイルは情報を表示できません
- サーバーオブジェクトとアプリケーションオブジェクトは、Application_OnStartサブルーチンとApplication_OnEndサブルーチンでのみ使用できます。Session_OnEndサブルーチンでは、サーバー、アプリケーション、およびセッションオブジェクトを使用できます。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ファイルに関数を含めることができます。
以下の例では、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」に1を追加します。
- Session_OnEndサブルーチンは、このサブルーチンがトリガーされるたびに「訪問者」から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>