Sessionオブジェクト

Session オブジェクトは、特定のユーザー セッションで必要になる情報を格納します。Session オブジェクトに格納されている変数は、ユーザーがアプリケーションのページ間を移動している間は破棄されず、ユーザー セッション全体を通じて変化しません。

セッションをまだ持っていないユーザーがアプリケーションの Web ページを要求すると、Web サーバーは Session オブジェクトを自動的に作成します。セッションがタイムアウトになるか、または破棄されると、サーバーは Session オブジェクトを破棄します。

通常、Session オブジェクトは、ユーザーの基本設定を格納するために使用します。たとえば、ユーザーがグラフィックスを表示しないように設定している場合、その情報を Session オブジェクトに格納することができます。

注 セッションの状態が維持されるのは、cookie をサポートしているブラウザの場合だけです。

* Contents
* StaticObjects
* CodePage
* LCID
* SessionID
* Timeout
* Abandon
* Remove
* RemoveAll
* Session_OnEnd
* Session_OnStart


URLEncode

(PWS4 IIS4 IIS5)
URLEncode — エスケープ文字を含む URL エンコード規則を文字列に適用します。

Server.URLEncode( string )

パラメータ
string エンコードする文字列を指定します。

説明

URLEncode メソッドは、指定された文字列に対し、エスケープ文字を含む URL エンコード規則を適用します。

例1.URLEncodeの例

次のスクリプトを記述したとします。

1
<%Response.Write(Server.URLEncode("http://www.microsoft.com")) %>

上の例からは、次の出力が得られます。

http%3A%2F%2Fwww%2Emicrosoft%2Ecom

HTMLEncode も参照ください。


Transfer

(IIS5)
Transfer — 処理を行う別の .asp ファイルに、現在の状態情報をすべて送信します。

Server.Transfer( Path )

パラメータ
Path 制御の転送先の .asp ファイルの場所です。

説明

Transfer メソッドは、ある .asp ファイルで処理するためにアセンブルされたすべての情報を、別の .asp ファイルに送信します。

Server.Transfer を呼び出すと、組み込みオブジェクトの状態の情報すべてが転送されます。つまり、セッションまたはアプリケーションスコープで、値に割り当てられた変数やオブジェクトは保持されます。さらに、要求コレクションの現在のコンテンツはすべて転送先の .asp ファイルで利用できます。

入力パラメータで指定したパスが別のアプリケーションの .asp ファイルへのパスである場合、.asp ファイルは、Server.Transfer コマンドを含むアプリケーション内にあるかのように実行します。つまり、アプリケーションのほかの .asp ファイルやアプリケーションの Global.asa ファイルによってアプリケーションスコープを与えられた変数およびオブジェクトはすべて、呼出し先の .asp ファイルでも利用できます。

次の例は、ある .asp ファイルから別の .asp ファイルへの転送、およびセッション識別子のクライアントへの送信を示します。
これらのスクリプトの出力は次のようになります。
A session ID
I am going to ASP2
The same session ID

例1.Transferの例

1
2
3
4
5
6
7
<html><body>
<%  Dim sessvar1
  Response.Write Session.SessionID
  Response.Write ("<br />")
  Response.Write("I am going to ASP2 <br />")
  Server.Transfer("/Myasps/ASP2.asp")
%>

Execute、Application オブジェクト も参照ください。


MapPath

(PWS4 IIS4 IIS5)
MapPath — 指定された仮想パス (現在のサーバー上の絶対パス、または現在のページからの相対パス) を物理パスにマップします。

Server.MapPath( Path )

パラメータ
Path 物理ディレクトリにマップする相対パスまたは仮想パスを指定します。path にスラッシュ (/) または円記号 (\) で始まるパスを指定した場合、MapPath メソッドは、path を仮想フルパスであるとみなした場合のパスを返します。path にスラッシュまたは円記号以外の文字で始まるパスを指定した場合、MapPath メソッドは、処理中の .asp ファイルのディレクトリからの相対パスを返します。

説明

MapPath メソッドは、指定された相対パスや仮想パスを、サーバー上の対応する物理ディレクトリにマップします。

MapPath メソッドでは、返されるパスが有効であるかどうか、またサーバー上に存在するかどうかはチェックされません。
MapPath メソッドは、指定されたディレクトリが現在存在しているかどうかにかかわらず、パスをマップします。このため、MapPath メソッドを使用してパスを物理ディレクトリ構造にマップしてから、指定されたディレクトリやファイルをサーバー上に作成するコンポーネントにそのパスを渡すことができます。
AspEnableParentPaths プロパティが TRUE (既定値) に設定されている場合は、Path パラメータに相対パス構文を使用することができます。スクリプトが物理ディレクトリ構造にアクセスするのを許可することに不安がある場合は、 AspEnableParentPaths プロパティを FALSE に設定することで、この機能を無効にすることができます。これは、インターネット インフォメーションサービススナップイン、またはスクリプトのいずれかを使用して行うことができます。

以下のスクリプト例で、ファイル data.txt は C:\Inetpub\Wwwroot\Script というディレクトリにあります。また、次のスクリプトが記述されている test.asp というファイルも同じディレクトリにあります。C:\Inetpub\Wwwroot ディレクトリはサーバーのホームディレクトリとして設定されています。
次の例は、サーバー変数 PATH_INFO を使用して現在のファイルの物理パスをマップします。

例1.MapPathの例

1
<%= server.mappath(Request.ServerVariables("PATH_INFO"))%>

上の例からは、次の出力が得られます。

c:\inetpub\wwwroot\script\test.asp

次の例のパス パラメータはスラッシュまたは円記号で始まっていないため、現在のディレクトリ (ここでは C:\Inetpub\Wwwroot\Script) からの相対パスとしてマップされます。

1
<%= server.mappath("data.txt")%>

上の例からは、次の出力が得られます。

c:\inetpub\wwwroot\script\data.txt

次の例は、スラッシュ (/) または円記号 (\) を使用してホーム ディレクトリの物理パスを返す方法を示しています。

1
<%= server.mappath("/")%>

上の例からは、次の出力が得られます。

c:\inetpub\wwwroot


HTMLEncode

(PWS4 IIS4 IIS5)
HTMLEncode — 指定された文字列に HTML エンコードを適用します。

Server.HTMLEncode( string )

パラメータ
string エンコードする文字列を指定します。

説明

HTMLEncode メソッドは、指定された文字列に HTML エンコードを適用します。

例1.HTMLEncodeの例

次のスクリプトを記述したとします。

1
<%= Server.HTMLEncode("The paragraph tag: <p>") %>

上の例からは、次の出力が得られます。

The paragraph tag: &lt;P&gt;

注 上の出力は Web ブラウザでは次のように表示されます。

The paragraph tag: <P>

ソース表示を選ぶか、またはページをテキスト ファイルとして開くと、エンコードされた HTML を表示することができます。

URLEncode も参照ください。


GetLastError

(IIS5)
GetLastError — エラー状況を説明する ASPError オブジェクトを返します。

Server.GetLastError( )

説明

GetLastError メソッドは、発生したエラー状況を示す ASPError オブジェクト を返します。このメソッドは、.asp ファイルがクライアントにコンテンツを送る前に限り利用できます。

ASP アプリケーション用の 500;100 カスタム エラーが定義されている場合は、.asp ファイルを参照します。この場合、アプリケーション内で .asp ファイルを実行している最中にエラーが発生したときは、サーバーはこの ASP ページを Server.Transfer メソッドを通して自動的に転送します。実行中の ASP アプリケーションから得られる、状態に関するすべての情報は、エラーを処理する .asp ファイルで利用できます。さらに、ASPError オブジェクトも利用できるため、エラー処理の設定に使用する .asp ファイルを通してエラーのプロパティを公開することもできます。

既定の Web サイトは、ファイル \iishelp\common\500-100.asp を使用するように構成されています。このファイルは、ASP エラーの処理、または独自のエラー処理の作成のいずれかに使用できます。500;100 カスタム エラーの処理について .asp ファイルを変更する場合は、インターネット インフォメーション サービススナップインを使用できます。詳細については、「ASP エラー処理を有効にする」を参照してください。

注 500;100 カスタム エラーは、IIS で、.asp ファイルまたはアプリケーションの Global.asa ファイルの処理中にエラーが発生した場合に生成されます。

次の 3 つの例は、500;100 カスタム エラーを生成するエラーを示しています。エラーには、次の 3 種類があります。

* 処理前のエラー
* スクリプト コンパイル時のエラー
* 実行時エラー

最初の例は、処理前のエラーを示しています。これは IIS がファイルをインクルードしようとしたときに発生するエラーです。このエラーは、インクルードステートメントのファイルパラメータが不足しているために発生します。2 つ目の例は、スクリプトコンパイル時のエラーを示しています。スクリプトは、For…Next ループのキーワード “next” が不足しているため、スクリプトエンジンによってコンパイルされません。3 つ目の例は、実行時エラーを示しています。これは、スクリプトで 0 による除算を行おうとしたために発生します。

例1.GetLastErrorの例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<!--#include fil=inc.h  -->
<%
  response.write "hello"
%>

<%
  dim I
  for i=1 to 1
  nxt
%>

<%
  dim i,j
  dim sum
  sum=0
  j=0

  for i=1 to 10
    sum=sum+1
  next

  sum=sum/j
%>

ASPErrorオブジェクト も参照ください。


Execute

(IIS5)
Execute — .asp ファイルを実行します。

Server.Execute ( Path )

パラメータ
Path 実行する .asp ファイルの場所を指定する文字列です。
このパラメータに絶対パスを指定する場合は、このパスは同じアプリケーションの範囲内にある .asp ファイルへのパスでなければなりません。

説明

Execute メソッドは、.asp ファイルを呼び出し、ASP スクリプトの呼び出しの一部であるかのように処理します。Execute メソッドは、多くのプログラミング言語にあるプロシージャ コールに似ています。

Server.Execute メソッドは、複雑なアプリケーションを個別のモジュールに分割する方法を提供します。Server.Execute メソッドを使用すると、必要に応じて呼び出すことができる .asp ファイルのライブラリを作成できます。この方法は、サーバー側インクルードに代わるものです。
Server.Execute の入力パラメータで指定した .asp ファイルが IIS によって処理されると、呼び出し元の ASP スクリプトに応答が返されます。実行された .asp ファイルは HTTP ヘッダーを変更することができます。ただし、ほかの .asp ファイルと同じように、実行された .asp ファイルが、クライアントへの応答が送られた後で HTTP ヘッダーを変更しようとすると、エラーが発生します。
パス パラメータには、絶対パスと相対パスのいずれかを指定できます。絶対パスの場合は、呼び出し元の .asp ファイルと同じアプリケーションの ASP スクリプトにマップする必要があります。
パス パラメータには、クエリ文字列を含めることができます。
呼び出し元または呼び出し先の .asp ファイルのいずれかに、トランザクションディレクティブが含まれている場合、トランザクションの状態はディレクティブを含む方の .asp ファイルに適用されます。たとえば、次の例では ASP1 が ASP2 を呼び出しています。ASP2 の処理中にトランザクションが中止された場合、ASP2 の OnTransactionAbort (存在する場合) が呼び出されます。ASP2 の処理が完了すると、ASP1 の OnTransactionAbort (存在する場合) が呼び出されます。

例1.Executeの例

次の例は、サーバーのスクリプトの処理時間が 100 秒を超えた場合に、スクリプトをタイムアウトとして終了します。

ASP1.asp:

1
2
3
4
5
6
7
8
9
<%@ Transaction=Required%>
<%
  Server.Execute ("ASP2.asp")

  Sub OnTransactionAbort
  End Sub
  Sub OnTransactionCommit
  End Sub
%>

ASP2.asp:

1
2
3
4
5
6
7
<%@ Transaction=Required %>
<%
  Sub OnTransactionAbort
  End Sub
  Sub OnTransactionCommit
  End Sub
%>

Transfer、OnTransactionAbort、OnTransactionCommit も参照ください。


CreateObject

(PWS4 IIS4 IIS5)
CreateObject — サーバー コンポーネントのインスタンスを作成します。

Server.CreateObject ( progID )

パラメータ
progID 作成するオブジェクトの種類を指定します。
progID の形式は [Vendor.]Component[.Version] です。

説明

CreateObject メソッドは、サーバー コンポーネントのインスタンスを作成します。コンポーネントに OnStartPage メソッドと OnEndPage メソッドが実装されている場合は、この時点で OnStartPage メソッドが呼び出されます。

特に指定しない限り、Server.CreateObject メソッドで作成されたオブジェクトはページ スコープを持ちます。つまり、これらのオブジェクトは、サーバーが現在の ASP ページの処理を完了した時点で自動的に破棄されます。
セッション スコープまたはアプリケーション スコープを持つオブジェクトを作成するには、Global.asa で

例1.CreateObjectの例

次の例は、サーバーのスクリプトの処理時間が 100 秒を超えた場合に、スクリプトをタイムアウトとして終了します。

1
<% Set Session("ad") = Server.CreateObject("MSWC.AdRotator")%>

また、変数を Nothing に設定するか、または下の例のように新しい値を設定することで、オブジェクトを破棄することもできます。1 番目の例ではオブジェクト ad を解放しています。2 番目の例では ad を文字列に置換しています。

1
2
<% Session("ad") = Nothing %>
<% Session("ad") = "some other value" %>

組み込みオブジェクトと同じ名前のオブジェクト インスタンスは作成できません。たとえば、次の例はエラーを返します。

1
<% Set Response = Server.CreateObject("Response") %>

ADO Connectionオブジェクト も参照ください。


ScriptTimeout

(PWS4 IIS4 IIS5)
ScriptTimeout — タイムアウトする前にスクリプトを実行できる時間です。

Server.ScriptTimeout = NumSeconds

パラメータ
NumSeconds スクリプトを実行できる最大秒数を指定します。
この時間を過ぎたスクリプトは、サーバーによって終了されます。既定値は 90 秒です。

説明

ScriptTimeout プロパティは、スクリプトを実行できる最大時間を指定します。この時間を過ぎたスクリプトは終了します。
サーバー コンポーネントの処理時間は、タイムアウトの対象にはなりません。

Web サービスまたは Web サーバーの ScriptTimeout の既定値は、メタベース内の AspScriptTimeout プロパティを使用して設定できます。ScriptTimeout プロパティには、メタベース内で指定した値よりも小さい値を設定することはできません。たとえば、NumSeconds に 10 を設定しても、メタベースの設定が既定値の 90 秒であれば、スクリプトは 90 秒後にタイムアウトになります。ただし、NumSeconds に 100 を設定した場合は、スクリプトは 100 秒後にタイムアウトになります。

例1.ScriptTimeoutの例

次の例は、サーバーのスクリプトの処理時間が 100 秒を超えた場合に、スクリプトをタイムアウトとして終了します。

1
<% Server.ScriptTimeout = 100 %>

例2.ScriptTimeoutの例

次の例は、ScriptTimeout プロパティの現在の値を取得して変数 TimeOut に格納します。

1
<% TimeOut = Server.ScriptTimeout %>

AspScriptTimeout も参照ください。


Serverオブジェクト

Server オブジェクトは、サーバーに関するメソッドおよびプロパティへのアクセスを提供します。これらのメソッドおよびプロパティのほとんどは、ユーティリティ関数として機能します。

* ScriptTimeout
* CreateObject
* Execute
* GetLastError
* HTMLEncode
* MapPath
* Transfer
* URLEncode