Form

(PWS4 IIS4 IIS5)
Form – POST メソッドを使用してフォームから HTTP 要求本体にポストされた、フォーム要素の値を取得します。

Request.Form( element )[( index )|.Count]
element:コレクションが値を取得するフォーム要素の名前です。
index:パラメータの複数の値のうちの 1 つにアクセスできるようにするための省略可能なパラメータです。1 ~ Request.Form( parameter ).Count までの整数値を指定できます。

説明

Form コレクションは、要求本体のパラメータ名別にインデックスが付けられます。Request.Form( element ) の値は、要求本体に出現するすべての element の値の配列になります。パラメータの値の数は、Request.Form( element ).Count を呼び出して調べることができます。パラメータに関連付けられている値が複数でない場合は、個数は 1 になります。パラメータが見つからない場合は、個数は 0 になります。
複数の値を持つフォーム要素のある値を参照するには、値を index で指定する必要があります。パラメータ index には 1 ~ Request.Form( element ).Count までの値を指定できます。index の値を指定せずに複数のフォーム パラメータの 1 つを参照した場合、データはカンマで区切られた文字列として返されます。
Request.Form でパラメータを使用すると、Web サーバーはその HTTP 要求本体を解析して、指定されたデータを返します。未解析のフォーム データがアプリケーションで必要な場合は、パラメータを指定せずに Request.Form を呼び出すことで取得できます。
注 ASP を使用し、100 KB を超えるデータのポストを行う場合、Request.Form は使用できません。100 KB を超えるデータのポストをアプリケーションが必要とする場合、Request.BinaryRead メソッドを使用してコンポーネントを記述することができます。
ループを使用することで、フォーム要求内のすべてのデータ値を取得できます。たとえば、ユーザーが要素 FavoriteFlavor に対して Chocolate および Butterscotch という 2 つの値を指定してフォームに入力した場合、次のようなスクリプトを使用してこれらの値を取得できます。

1
2
3
4
5
<%
  For i = 1 To Request.Form("FavoriteFlavor").Count
    Response.Write Request.Form("FavoriteFlavor")(i) & "<br />"
  Next
%>

※ フォームに同じ名前を持つオブジェクト (HTML SELECT タグなど) が複数含まれている場合、Form コレクションの項目は、選択された値すべてがカンマで区切られている一覧になります。

QueryStringコレクション も参照ください。


Cookies

(PWS4 IIS4 IIS5)
Cookies — Cookies コレクションで、HTTP 要求の中で送信された cookie の値を取得できます。

Request.Cookies( cookie )[( key )|.attribute]
cookie:値を取得する cookie を指定します。
Key:cookie 辞書からサブキーの値を取得するために使用する省略可能なパラメータです。
attribute:cookie に関する情報を指定します。指定できる属性パラメータはHasKeysを参照ください。
説明

cookie 辞書のサブキーにアクセスするには、Key に対応する値を指定します。Key を指定せずに cookie 辞書にアクセスすると、すべてのキーが 1 つのクエリー文字列として返されます。たとえば、MyCookie に First と Second という 2 つのキーがあるとき、Request.Cookies の呼び出しの中でこれらのキーをどちらも指定していないと、次の文字列が返されます。

First=firstkeyvalue&Second=secondkeyvalue

同じ名前を持つ 2 つの cookie がクライアント ブラウザから送信された場合、Request.Cookies はより深いパス構造を持つ方の cookie を返します。たとえば、2 つの cookie が同じ名前で、一方のパス属性が /www/、もう一方のパス属性が /www/home/ であるとすると、クライアント ブラウザは両方の cookie を /www/home/ ディレクトリに送信しますが、Request.Cookies は後者の方の cookie だけを返します。

例1.Cookiesの例

1
<%= Request.Cookies("myCookie") %>

ループを使用すると、Cookies コレクション内のすべての cookie や、cookie 内のすべてのキーを調べることができます。ただし、キーを持っていない cookie に対してループを使用した場合は何も出力されません。これを防ぐには、.HasKeys の構文を使用して cookie がキーを持っているかどうかを先にチェックしておきます。以上の例を次に示します。

1
2
3
4
5
6
7
8
9
10
11
<%
    For Each strKey In Request.Cookies
      Response.Write strKey & " = " & Request.Cookies(strKey) & "<br />"
      If Request.Cookies(strKey).HasKeys Then
        For Each strSubKey In Request.Cookies(strKey)
          Response.Write "->" & strKey & "(" & strSubKey & ") = " & _
            Request.Cookies(strKey)(strSubKey) & "<br />"
        Next
      End If
    Next
%>

Cookiesコネクション,HasKeys も参照ください。


ClientCertificate

(PWS4 IIS4 IIS5)
ClientCertificate — HTTP 要求の中で送信されたクライアント証明書に格納されているフィールドの値です。

Request.ClientCertificate( Key [SubField] )
Key:変数名/インデックス(取得する証明書フィールドの名前を指定します。クライアント証明書を構成しているフィールドは、以下のとおりです。)

Certificate
ASN.1 形式による、証明書のコンテンツ全体のバイナリ ストリームを含む文字列です。

Flags
クライアント証明書の補足情報となる一連のフラグです。次のフラグを設定できます。

ceCertPresent
クライアント証明書が存在します。

ceUnrecognizedIssuer
このチェインの最後の証明書は未知の発行者からのものです。

※ これらのフラグを使用する場合は、自分の ASP ページにクライアント証明書インクルードファイルをインクルードする必要があります。VBScript を使用している場合は cervbs.inc を、JScript を使用している場合は cerjavas.inc を、それぞれインクルードします。これらのファイルは \Inetpub\ASPSamp\Samples ディレクトリにインストールされています。

Issuer
サブフィールド値のリストからなる文字列です。サブフィールドには証明書の発行者に関する情報が含まれています。この値を SubField なしで指定した場合、ClientCertificate コレクションはカンマで区切られたサブフィールドのリストを返します。たとえば、”C=US, O=Verisign, …” などです。

SerialNumber
証明書のシリアル番号からなる文字列です。16 進バイト値をハイフン (-) で区切って ASCII 文字で表現したものです。たとえば、”04-67-F3-02″ などとなります。

subject
サブフィールド値のリストからなる文字列です。サブフィールドには証明書のサブジェクトに関する情報が含まれています。この値を SubField なしで指定した場合、ClientCertificate コレクションはカンマで区切られたサブフィールドのリストを返します。たとえば、”C=US, O=Msft, …” などとなります。

ValidFrom
証明書がいつから有効かを表す日付です。この日付は VBScript の形式に従い、各国対応設定によって変化します。たとえば、米国では 9/26/96 11:59:59 PM という形式になります。年の値は 4 桁の数値で表示されます。

ValidUntil
証明書の有効期限がいつ切れるかを表す日付です。年の値は 4 桁の数値で表示されます。

SubField
“Subject” または “Issuer” のどちらかのキーの中の個々のフィールドを取得するために使用する、省略可能なパラメータです。このパラメータはサフィックスとして Key パラメータの後に追加します。たとえば、”IssuerO”、”SubjectCN”、などとなります。次の表は、一般的な SubField の値のいくつかを示しています。

C 発行国名/地域名を指定します。

CN ユーザーの一般名を指定します (このサブフィールドは “Subject” キーと共に使用されます)。

GN 名前を指定します。

I イニシャルを指定します。

L 地域名を指定します。

O 企業名または組織名を指定します。

OU 部署名を示します。

S 州名または地方名を指定します。

T 役職名を指定します。

この表で列挙したもの以外の SubField 値については、それらの ASN.1 識別子によって識別できます。ASN.1 識別子の形式はピリオド (.) で区切られた数値のリストです。たとえば、”3.56.7886.34″ などとなります。
説明

ClientCertificate コレクションは、Web ブラウザが発行した要求から (X.509 規格で規定されている) 証明書フィールドを取得します。 Web ブラウザがサーバーへの接続で SSL3.0/PCT1 プロトコルを使用していて (つまり http:// ではなく https:// で始まる URL を使用していて)、サーバーが証明書を要求している場合、ブラウザは証明書フィールドを送信します。 証明書がまったく送信されない場合、ClientCertificate コレクションは EMPTY を返します。 ClientCertificate コレクションを使用するときは、クライアント証明書を要求するように Web サーバーを構成する必要があります。

ループを使用すると ClientCertificate コレクションのすべてのキーを解析できます。この例を次に示します。

例1.ClientCertificateの例

1
2
3
4
5
<%
    For Each strKey in Request.ClientCertificate
        Response.Write strkey & " = " & Request.ClientCertificate(strkey) & "<br />"
    Next
%>

次の例は、Subject キーを使って、クライアント証明書が提示されているかどうかを調べます。

1
2
3
4
5
<%
  If Len(Request.ClientCertificate("Subject")) = 0 then
    Response.Write("No client certificate was presented")
  End if
%>

次の例は、クライアント証明書を発行した企業の一般名を取得します。

1
2
3
<%
Response.Write Request.ClientCertificate("IssuerCN")
%>

次の例は、クライアント証明書のサブジェクトの組織名を調べます。

1
2
3
4
5
<%
  If (Request.ClientCertificate("Subject")="Msft") then
    Response.Write("Good Choice!")
  End if
%>

次の例は、クライアント証明書の有効期限を表示します。

1
2
This certification will expire on
<%= Request.ClientCertificate("ValidUntil") %>

次の例は、Flags キーを使用して証明書の発行者が既知であるかどうかを調べます。1 行目のインクルード ステートメントでは、このスクリプトで ceUnrecognizedIssuer という名前付きフラグを使えるようにしています。

1
2
3
4
5
6
<!--#include file="cervbs.inc" -->
<%
  If Request.ClientCertificate("Flags") and ceUnrecognizedIssuer then
    Response.Write "Unrecognized issuer"
  End If
%>

ServerBariablesコレクション も参照ください。


Requestオブジェクト

Request オブジェクトは、HTTP 要求の中でクライアント ブラウザがサーバーに渡した値を取得します。
指定された変数が、上に示した 5 つのコレクションのいずれにもない場合、Request オブジェクトは EMPTY を返します。
コレクション名を指定せずに Request( variable ) という呼び出しを使用して変数に直接アクセスすることもできます。この場合、Web サーバーは次の順序でコレクションを探します。

1. QueryString
2. Form
3. Cookies
4. ClientCertificate
5. ServerVariables

同じ名前を持つ変数が複数のコレクションにある場合、Request オブジェクトは、最初に見つけたインスタンスを返します。
コレクションのメンバを参照するときは、完全な名前を使用してください。たとえば、Request.( AUTH_USER ) ではなく、Request.ServerVariables( AUTH_USER ) のように指定してください。完全な名前を使用すると、サーバーはより速く項目を探すことができます。

* ClientCertificate
* Cookies
* Form
* QueryString
* ServerVariables
* Count
* TotalBytes
* HasKeys
* BinaryRead


OnTransactionCommit

(PWS4 IIS4 IIS5)
OnTransactionCommit — トランザクション完了時に発生

Sub OnTransactionCommit
<処理>
End Sub

説明

OnTransactionCommit イベントは、トランザクションを実行するスクリプトのトランザクションをコミットした場合に発生します。OnTransactionCommit イベントが発生すると、IIS は、該当するスクリプトの OnTransactionCommit サブルーチン (存在する場合) を処理します。

例1.OnTransactionCommitの例

この例は、トランザクションをコミットし、クライアントに応答を返します。

1
2
3
4
5
6
7
8
9
<%@ TRANSACTION=Required LANGUAGE="VBScript" %>
<% Option Explicit
  ObjectContext.SetComplete
  Sub OnTransactionCommit
    Response.Write "<p><b>The Transaction just committed</b>."
    Response.Write "This message came from the "
    Response.Write "OnTransactionCommit() event handler."
  end sub
%>

SetCompleteメソッドも参照ください。


OnTransactionAbort

(PWS4 IIS4 IIS5)
SetAbort — トランザクション中止時に発生

Sub OnTransactionAbort
<処理>
End Sub

説明

OnTransactionAbort イベントは、トランザクションが中止された場合に発生します。OnTransactionAbort イベントが発生すると、IIS は、該当するスクリプトの OnTransactionAbort サブルーチン (存在する場合) を処理します。

例1.OnTransactionAbortの例

この例は、トランザクションが中止されたときに、クライアントに応答メッセージを送信します。

1
2
3
4
5
6
7
8
9
<%@ TRANSACTION=Required LANGUAGE="VBScript" %>
<% Option Explicit
  ObjectContext.SetAbort
  Sub OnTransactionAbort
    Response.Write "<p><b>The Transaction just aborted</b>."
    Response.Write "This message came from the "
    Response.Write "OnTransactionAbort() event handler."
  end sub
%>

SetAbortメソッドも参照ください。


SetComplete

(PWS4 IIS4 IIS5)
SetComplete — SetComplete メソッドは、スクリプト内でそれまでに呼び出された SetAbort メソッドを上書きします。

ObjectContext.SetComplete

説明

SetComplete メソッドは、トランザクションを完了させないための理由が、そのスクリプトでは見つからないことを宣言します。トランザクションに参加しているすべてのコンポーネントが SetComplete を呼び出すと、トランザクションは完了します。

例1.SetCompleteの例

1
2
3
<%
ObjectContext.SetComplete
%>

OnTransactionCommitイベントも参照ください。


SetAbort

(PWS4 IIS4 IIS5)
SetAbort — SetAbort メソッドは、スクリプトで開始されたトランザクションが完了していないので、リソースを更新すべきではないことを宣言します。

ObjectContext.SetAbort

説明

SetAbort メソッドは、.asp ファイルによって開始されたトランザクションを中止します。

例1.SetAbortの例

1
2
3
<%
ObjectContext.SetAbort
%>

OnTransactionAbortイベントも参照ください。


ObjectContextオブジェクト

ObjectContext オブジェクトは、ASP ページ内のスクリプトによって開始された、コンポーネント サービスが管理するトランザクションをコミットまたは中止します。
ASP に @TRANSACTION ディレクティブが含まれている場合、そのページは 1 つのトランザクション内で実行され、トランザクションが完全に終了するかまたは失敗するまで、ページの処理は完了しません。

ObjectContext は、COM の ObjectContext オブジェクトのメソッドのうち、2 つのメソッドを実装しています。SetAbort メソッドは、トランザクションを明示的に中止します。この場合、コンポーネントサービスは、トランザクションの第 1 フェーズに関与したリソースに対する更新が行われないようにします。トランザクションが中止されると、そのスクリプトの OnTransactionAbort イベントが処理されます。
SetComplete メソッドの呼び出しは、必ずしもトランザクションの完了を意味するものではありません。トランザクションが完了するのは、スクリプトから呼び出されたトラザクション コンポーネントのすべてが SetComplete を呼び出した後です。ほとんどの場合、スクリプトの中で SetComplete を呼び出す必要はありません。これは、SetAbort を呼び出すことなく処理が終了したスクリプトは正常に完了したと見なされるためです。
ObjectContext は、SetAbort と SetComplete 以外のメソッドも公開しています。ただし、これらのメソッドは ASP スクリプトでは利用できません。スクリプトから呼び出されたコンポーネントでは、これらのメソッドを利用できます。

* SetAbort
* SetComplete
* OnTransactionAbort
* OnTransactionCommit


Source

(IIS5)
Source — 可能である場合、エラーの原因となった行のソース コードを返します。

ASPError.Source( )

説明

Source プロパティは、可能である場合、エラーの原因となった行の実際のエラー ソース テキストを返します。

例1.Sourceの例

1
2
3
<%
ASPError.Source()
%>

GetLastError も参照ください。