次の方法で共有


Session_OnStart

Session_OnStart イベントは、サーバーが新しいセッションを作成したときに発生します。このスクリプトは、要求されたページの実行前に処理されます。したがって、Session_OnStart イベントは、セッション全体の変数を設定するタイミングとして適しています。変数は、ページへのアクセスが始まる前に設定されるためです。Session_OnStart イベント スクリプトでは、すべての組み込みオブジェクト (ApplicationObjectContextRequestResponseServer、および Session) が利用でき、参照できます。

構文

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

 

</SCRIPT>

 

パラメータ
  • ScriptLanguage
    イベント スクリプトの作成に使うスクリプト言語を指定します。VBScript や JScript など、サポートされている任意のスクリプト言語を選択できます。複数のイベントが同じスクリプト言語を使う場合、単独の <SCRIPT> タグ セットの下に一緒に指定できます。

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
  'Make sure that new users start on the correct
  'page of the ASP application.

  'Replace the value given to startPage below
  'with the virtual path to your application's
  'start page.

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

  'Do a case-insensitive compare, and if they
  'don't match, send the user to the start page.

  If strcomp(currentPage,startPage,1) then
    Response.Redirect(startPage)
  End If
End Sub
</SCRIPT>

上の例は、cookie をサポートしているブラウザでのみ動作します。非 cookie ブラウザは SessionID cookie を返さないため、ユーザーがページを要求するたびにサーバーは新しいセッションを作成します。したがって、要求ごとにサーバーは Session_OnStart スクリプトを処理し、ユーザーを開始ページに移動させます。上記のスクリプトを使う場合、そのサイトの開始ページには、cookie が利用可能なブラウザの使用が必要なことをユーザーに知らせるメッセージを掲示することをお勧めします。

解説

Redirect メソッド の呼び出しの後にある Session_OnStart イベント スクリプトは実行されないことに注意してください。したがって、次の例のように、Redirect メソッドはイベント スクリプトの最後に呼び出します。

  <SCRIPT LANGUAGE=VBScript RUNAT=Server>
 Sub Session_OnStart
  'Session initialization script.
  Response.Redirect "http:/server/app/StartHere.asp"
 End sub
</SCRIPT>

上の例では、セッション初期化スクリプトの実行中にクライアントに表示されるテキストは、Redirect メソッドによって非表示になります。

関連項目

Session_OnEndApplication_OnStart