Session_OnStart

Session_OnStart イベントは、サーバーが新しいセッションを作成するときに起こります。このスクリプトは要求されたページを実行する前に処理されます。Session_OnStart イベントの間、設定する変数はセッション全体で有効である必要があります。Session_OnStart イベント スクリプトからはすべての組み込みオブジェクト (ApplicationRequestResponseServer、および Session) を参照できます。

構文

<SCRIPT LANGUAGE=ScriptLanguage RUNAT=Server>
Sub Session_OnStart
. . .
End Sub

</SCRIPT>

パラメータ

ScriptLanguage

イベント スクリプトの記述に使用するスクリプト言語を指定します。Microsoft(R) Visual Basic(R) Scripting Edition や JScript などのサポートされている任意のスクリプト言語を指定できます。複数のイベントで同じスクリプト言語を使用している場合は、<SCRIPT> タグを使ってそれらを 1 つにまとめることができます。

解説

Session_OnStart イベントの中で Redirect メソッドや End メソッドを呼び出した場合、Session オブジェクトは変化しませんが、サーバーは Global.asa ファイル、および Session_OnStart イベントを起動したファイルの両方のファイルのスクリプトの処理を停止します。

たとえば、Session_OnStart イベントで Redirect メソッドを呼び出し、特定の Web ページをユーザーが開いたときに常にセッションを開始するようにできます。ユーザーがアプリケーションを起動すると、サーバーはユーザーのためのセッションを作成し、Session_OnStart スクリプトを処理します。このイベントの中で、ユーザーが開いたページが開始ページであるかどうかを調べ、開始ページであれば Response.Redirect メソッドを呼び出してユーザーを開始ページにリダイレクトするためのスクリプトを記述することができます。以上の動作を行うスクリプトの例を次に示します。

<SCRIPT RUNAT=Server Language=VBScript>
Sub Session_OnStart
    ' 新しいユーザーが必ず ASP アプリケーションの正しい
    ' ページ上から開始できるようにします。

    ' 以下の startPage の値を、自分のアプリケーションの
    ' 開始ページを指す仮想パスに置き換えてください。

    startPage = "/MyApp/StartHere.asp"
    currentPage = Request.ServerVariables("SCRIPT_NAME")

    ' 大文字小文字を区別して比較し、一致しなければ
    ' ユーザーを開始ページにジャンプさせます。
if strcomp(currentPage,startPage,1) then
Response.Redirect(startPage)
end if
End Sub
</SCRIPT>

注意 このスクリプト例は、cookies をサポートしているブラウザでのみ正常に動作します。cookie をサポートしていないブラウザは SessionID を返さないため、サーバーはユーザーがページを要求するたびに新しいセッションを作成します。したがって、各要求ごとにサーバーは Session_OnStart スクリプトを処理してユーザーを開始ページにリダイレクトします。次に示すスクリプトを使う場合は、開始ページの中で、"このサイトでは cookie がサポートされているブラウザが必要です" というようなメッセージをユーザーに表示するようにしてください。

Redirect メソッド呼び出しの後に記述された Session_OnStart イベント スクリプトは実行されないので注意が必要です。このため、Redirect メソッドはスクリプトの最後で呼び出してください。以上のスクリプト例を次に示します。

<SCRIPT LANGUAGE=VBScript RUNAT=Server> 
   Sub Session_OnStart
      ' セッション初期化スクリプト
      Response.Redirect "http:/server/app/StartHere.asp"
   End sub
</SCRIPT>
 

注意 前の例で Redirect メソッドが実行されると、セッション初期化スクリプトの実行中はクライアントにテキストが表示されなくなります。

関連項目

Session_OnEndApplication_OnStart


(C) Microsoft Corporation. All rights reserved.