| AcceptTypes | ||||||||||||
stringArray = Request.AcceptTypes | ||||||||||||
クライアントが受け入れる MIME (Multipurpose Internet Mail Extension) タイプを保持する文字列配列を返します。このプロパティを使用して、Word や Excel のようなアプリケーションのタイプなど、特定のタイプの応答をクライアントが受け入れ可能かどうかを判断できます。Word や Excel は、Internet Explorer だけがサポートしています。 |
||||||||||||
次の表に、一般的な MIME タイプの一部を示します。 |
||||||||||||
|
||||||||||||
| パラメータ | ||||||||||||
|
||||||||||||
| 例 | ||||||||||||
次のコード例では、文字列配列と整数カウンタの変数を宣言し、AcceptTypes プロパティ値をその配列変数に代入します。次に、カウンタ変数を使用して配列メンバーを繰り返し実行し、Message Label コントロールを使用して、各値をブラウザに書き込みます。 |
||||||||||||
Sub Page_Load( )
'Display Accept Types
Dim MyArray( ) As String
Dim I As Integer
MyArray = Request.AcceptTypes
For I = 0 To MyArray.GetUpperBound(0)
Message.Text &= "Type " & CStr(I) & ": " & CStr(MyArray(I)) & _
"<br/>"
Next I
End Sub
|
||||||||||||
コードの出力は、次のようになります。 |
||||||||||||
|
||||||||||||
| メモ | ||||||||||||
このプロパティにより、クライアントが処理できない応答をサーバーからクライアントに送信して時間を無駄にすることを防ぐことができます。たとえば、通常は、Excle ワークシートを返すことによって実現される要求を、クライアントが Excel MIME タイプ application/vnd.ms-excel をサポートしない場合に、別のタイプの応答を使用して実現できます。 |
||||||||||||
| ApplicationPath | |
stringvar = Request.ApplicationPath | |
現在のアプリケーションの仮想ルートへのパスを保持する文字列を返します。 |
|
| パラメータ | |
|
|
| 例 | |
次のコード例では、ApplicationPath を取得し、取得したパスを Message Label コントロールを使用してクライアントに書き込みます。 |
|
Sub Page_Load( ) Message.Text = Request.ApplicationPath End Sub |
|
コードの出力は、要求が送信されたアプリケーションの仮想ルートの名前になります。 |
|
| Browser | |
bc = Request.Browser | |
クライアントブラウザの機能を示す HttpBrowserCapabilities クラスのインスタンスを返します返されたクラスのインスタンスを使用して、クライアントブラウザがサポートする機能を判断できます。HttpBrowserCapabilities クラスは、ブール値プロパティと文字列プロパティのセットとしてクライアントブラウザの機能を公開します。HttpBrowserCapabilities クラスには、次のプロパティがあります。 |
|
|
|
| パラメータ | |
|
|
| 例 | |
Sub Page_Load( )
Dim bc As HttpBrowserCapabilities
bc = Request.Browser
If bc.Cookies Then
Message.Text = "Cookies are available with this browser"
Else
Message.Text = "Cookies are not available with this browser"
End If
End Sub
|
|
| メモ | |
複数のブラウザをサポートする予定があり、Internet Explorer 5 や 6 または Netscape 6 などのより上位のブラウザで、最も高レベルの機能を提供する必要がある場合は、このプロパティを頻繁に使用することになります。Cookies や JavaScript などの一部のプロパティで返されるブール値は、要求を送信するブラウザのバージョンがこれらの機能をサポートしているかどうかだけを示すものであり、現在のユーザーのブラウザでこれらの機能が有効になっているかどうかはわかりません。 |
|
このプロパティは、カスタムサーバーコントロールを開発する際に特に重要となります。これは、このプロパティにより、カスタムコントロールの出力を特定のブラウザ、またはブラウザのクラスに合わせて自動調整できるためです。カスタムコントロールの開発の詳細については、第 6 章を参照してください。 |
|
| ClientCertificate | |
cs = Request.ClientCertificate | |
HttpClientCertificate クラスのインスタンスを返します。このクラスは、クライアントのセキュリティ証明書の設定に関する情報を公開します。公開されるプロパティには、発行者情報、キーサイズ、証明書の有効期間などがあります。 |
|
| パラメータ | |
|
|
| 例 | |
Sub Page_Load( ) Dim cs As HttpClientCertificate cs = Request.ClientCertificate Message.Text = "Certificate Issuer is: " & cs.Issuer & "." End Sub |
|
| メモ | |
このプロパティは、イントラネットの設定で使用することになります。イントラネットの設定では、ブラウザ経由で入力された一連の資格情報を使用してクライアントの認証を要求するのではなく、ユーザーの証明書サーバーから発行された証明書を限られた数のクライアントに提供してアプリケーションにアクセスするようにします。この場合、セキュリティで保護されたアクセスを提供するために、クライアント証明書が NT ユーザーアカウントにマップされます。クライアント証明書が信頼済みのサードパーティから発行される場合もありますが、この方法はほとんど使用されません。要求を行っているクライアントにクライアント証明書がインストールされていない場合、このプロパティは有効なプロパティ値を持たない HttpClientCertificate インスタンスを返します。 |
|
| ContentEncoding | |
ce = Request.ContentEncoding | |
System.Text 名前空間にある Encoding クラスのインスタンスを返します。このクラスは、現在行っている要求の本文の文字エンコードを表します。 |
|
| パラメータ | |
|
|
| 例 | |
次の例では、ユーザーに対し現在の ContentEncoding を表示する方法を示します。 |
|
Sub Page_Load( ) Dim ce As System.Text.Encoding ce = Request.ContentEncoding Message.Text = "Current encoding is: " & ce.EncodingName & "." End Sub |
|
UTF-8 コンテンツエンコードを使用する要求の場合、この例の出力は次のようになります。 |
|
Current encoding is: Unicode (UTF-8). |
|
| ContentLength | |
intvar = Request.ContentLength | |
クライアントから送信された要求の長さをバイト単位で表す整数 を返します。このプロパティは、HTTP 要求の本文で送信されたコンテンツの長さのみを含みます。HTTP ヘッダの長さ、または HTTP GET 要求の一部として送信されたヘッダ内のデータの長さは含みません。HTTP 要求に本文がない場合、値は 0 になります。 |
|
| パラメータ | |
|
|
| 例 | |
次の例では、現在の要求の長さをブラウザに表示する方法を示します。 |
|
Sub Page_Load( ) Dim length As Integer length = Request.ContentLength Message.Text = "Length of request was: " & length & " bytes." End Sub |
|
次のコードを使用して、サンプルページにポストすることができます。 |
|
<html>
<head>
<title>Submit a named parameter via POST</title>
</head>
<body>
<form id="form1" action="ContentLength.aspx" method="POST">
<h3>Name:</h3>
<input type="text" name="name">
<input type="submit">
</form>
</body>
</html>
|
|
| メモ | |
このプロパティを使用すると、POST 要求経由でポストされたコンテンツでアクションを行う前に、そのコンテンツの長さを調べることができます。たとえば、ファイル入力フィールドからページにファイルが渡される場合、ユーザーがアップロードするファイルを保存または処理する前に ContentLength プロパティを確認して、特定のサイズを超えるファイルがアップロードされないようにすることができます。複数のフォームフィールドを受け取る場合は、ファイルの送信に使用する HtmlInputFile コントロールの PostedFile.ContentLength プロパティを参照することによって、アップロードされるファイルのサイズに関するより明確なデータを取得できます。 |
|
| ContentType | |
stringvar = Request.ContentType | |
現在のクライアント要求で使用されている MIME タイプを保持する文字列を返します。GET 要求では、このプロパティが空の文字列を返す場合があります。 |
|
| パラメータ | |
|
|
| 例 | |
次の例では、要求の ContentType に応じて異なるアクションをページ内で実行する方法を示します。 |
|
Sub Page_Load( )
Dim ct As String
ct = Request.ContentType
If ct = "application/x-www-form-urlencoded" Then
'Process form input
Message.Text = "Form data was submitted."
Else
Message.Text = "Content Type of request is: " & ct
End If
End Sub
|
|
次のコードを使用して、サンプルページにポストすることができます。 |
|
<html>
<head>
<title>Submit a named parameter via POST</title>
</head>
<body>
<form id="form1" action="ContentType.aspx" method="POST">
<h3>Name:</h3>
<input type="text" name="name">
<input type="submit">
</form>
</body>
</html>
|
|
| メモ | |
このプロパティを使用して、要求のコンテンツタイプが想定したタイプであることを確認することもできます。これにより、無効な要求によるプロセッサ時間の浪費を回避したり、悪意のあるユーザーが想定外のコンテンツを送信して偽の要求をアプリケーション対して行うことを回避することができます。 |
|
| FilePath | |
stringvar = Request.FilePath | |
現在のクライアント要求の仮想パスを保持する文字列を返します。仮想パスには、アプリケーションのルートフォルダの名前、要求のパス内のすべてのサブフォルダ、および要求したファイル名が含まれます。 |
|
| パラメータ | |
|
|
| 例 | |
次の例では、ユーザーに対して FilePath プロパティを表示します。 |
|
Sub Page_Load( )
Dim fp As String
fp = Request.FilePath
Message.Text = "The virtual path of the current request is: _
& "<strong>" & fp & "</strong>"
End Sub
|
|
| メモ | |
このプロパティは、本章の後の部分で説明する Path プロパティと等価です。 |
|
| HttpMethod | |
stringvar = Request.HttpMethod | |
現在の要求のメソッド (GET、POST、または HEAD など) を保持する文字列を返します。 |
|
| パラメータ | |
|
|
| 例 | |
次の例では、HttpMethod プロパティを使用して、特定の要求に対して実行するアクションを判断します。 |
|
Sub Page_Load( )
Select Case Request.HttpMethod
Case "POST"
Response.Write("POST requests not allowed!<br/>")
Response.End
Case "HEAD"
Response.Write("HEAD requests not allowed!<br/>")
Response.End
Case "GET"
'Process request
Message.Text = "GET requests are allowed!<br/>"
Case Else
Response.Write("Unknown request: not allowed!<br/>")
Response.End
End Select
End Sub
|
|
メッセージを送信するために Response.Write を使用してから、Response.End を呼び出しています。Response.End を呼び出すことにより、そのページの処理が直ちに終了し、すべてのサーバーコントロール出力の表示も行われません。サンプルページに POST 要求を行うページのコードは、次のとおりです。 |
|
<html>
<head>
<title>Submit a named parameter via POST</title>
</head>
<body>
<form id="form1" action="HttpMethod.aspx" method="POST">
<h3>Name:</h3>
<input type="text" name="name">
<input type="submit">
</form>
</body>
</html>
|
|
| メモ | |
従来の ASP では、通常、要求メソッドは ServerVariables コレクションの REQUEST_METHOD キーを使用して取得していました。多くの場合、このキーは、自己送信フォームのページを作成すために使用され、GET メソッドを検出した場合はフォームフィールドのセットを表示し、また POST メソッドを検出した場合はフォームフィールドから受け取った入力を処理することにより作成していました。ASP.NET Web フォームは、自己送信フォームの組み込み機能を提供します。runat="server" 属性を備えた 1 つのフォームを追加し、そのフォームに入力形式のサーバーコントロールを追加することにより、デベロッパーは、ページの IsPostBack プロパティを単に確認して、POST 要求または GET 要求を受け取ったかどうかを判断し、そのプロパティに基づいて目的のコードを実行できます。 |
|
| InputStream | |
inputstream = Request.InputStream | |
着信 HTTP 要求の本文を保持する Stream オブジェクトを返します。 |
|
| パラメータ | |
|
|
| 例 | |
次の例は、バイト配列を使用して、特定の文字を検索し、その文字とストリームの残りのコンテンツを文字列にコピーします。次の例に示されている @ Import ディレクティブは、ページの先頭に配置する必要があります。 |
|
<% @ Import Namespace="System.IO" %>
Sub Page_Load( )
Dim InStream As Stream
Dim iCounter, StreamLength, iRead As Integer
Dim OutString As String
Dim Found As Boolean
InStream = Request.InputStream
StreamLength = CInt(InStream.Length)
Dim ByteArray(StreamLength) As Byte
iRead = InStream.Read(ByteArray, 0, StreamLength)
InStream.Close( )
For iCounter = 0 to StreamLength - 1
If Found = True Then
OutString &= Chr(ByteArray(iCounter))
End If
If Chr(ByteArray(iCounter)) = "A" Then
Found = True
OutString &= Chr(ByteArray(iCounter))
End If
Next iCounter
Message.Text = "Output: " & OutString
End Sub
|
|
次のコードを使用して、サンプルページにポストすることができます。 |
|
<html>
<head>
</head>
<body>
<form id="form1" action="InputStream.aspx" method="POST">
<h3>Name:</h3>
<input type="text" name="name">
<input type="submit">
</form>
</body>
</html>
|
|
このコードは、要求の本文に出現する最初の英大文字 A を出力として返します。A 以降のすべての文字は、ストリームの末尾に返されます。 |
|
| メモ | |
このプロパティは、要求の本文をバイトレベルでフィルタリングする場合に役に立ちます。このプロパティは、POST 要求でのみ機能します。これは、要求の本文を提供する HTTP 要求のうち通常使用されるは POST 要求のみであるためです。 |
|
| IsAuthenticated | |
boolvar = Request.IsAuthenticated | |
現在の要求が認証済みのユーザーから行われているかどうかを示すブール値 を返します。このプロパティは、NTLM アカウントデータベースに対して認証の検索を行います。 |
|
| パラメータ | |
|
|
| 例 | |
次の例では、現在のユーザーが認証されているかどうかを調べ、そのユーザーの認証状態に応じて、2 つのメッセージのうちの 1 つを出力します。認証済みのユーザーに配信されるメッセージは、ページの User プロパティを利用して、現在のユーザーの名前とドメインを出力します。 |
|
Sub Page_Load( )
Dim boolAuth As Boolean
boolAuth = Request.IsAuthenticated
If boolAuth Then
Message.Text = "User " & Page.User.Identity.Name & " is authenticated."
Else
Message.Text = "Current user is not authenticated."
End If
End Sub
|
|
| メモ | |
HttpRequest クラスが公開する IsAuthenticated プロパティに加えて、HttpRequest クラスとほぼ同じ目的で、FormsIdentity クラス、WindowsIdentity クラス、および PassportIdentity クラスが IsAuthenticated プロパティを公開します。HttpRequest クラスの IsAuthenticated プロパティは、使用する認証方法にかかわらず、ユーザーの認証状態を返します。 |
|
| IsSecureConnection | |
boolvar = Request.IsSecureConnection | |
現在の接続が SSL (Secure Sockets Layer) を通信に使用するかどうかを示すブール値を返します。 |
|
| パラメータ | |
|
|
| 例 | |
次の例では、現在の要求が SSL 経由で行われたかどうかに応じて異なるアクションを実行する方法を示します。 |
|
Sub Page_Load( )
Dim boolvar As Boolean
boolvar = Request.IsSecureConnection
If boolvar = True Then
Message.Text = "Connection is HTTPS."
Else
Message.Text = "Connection is HTTP."
End If
End Sub
|
|
| メモ | |
通常、このプロパティを使用して、要求されたページ経由で送信するクレジットカード番号などの機密データを暗号化するなど、SSL 接続が必要となる要求が正しく実行されているかどうかを判断します。また、SSL が使用されているかどうかわからないページでこのプロパティを使用し、SSL の状態に合わせてページへの出力の表示方法を決定できます。SSL 通信での暗号化と復号化はパフォーマンスに悪影響を及ぼすので、一般的には、SSL 対応のページで使用するグラフィックスの数またはサイズ、あるいはその両方を削減することが推奨されます。このプロパティを使用して、SSL が有効ではない要求の場合は高解像度のグラフィックスを表示し、SSL 要求の場合は低解像度のグラフィックスを表示するようにできます。 |
|
| Path | |
stringvar = Request.Path | |
現在のクライアント要求の仮想パスを保持する文字列を返します。仮想パスには、アプリケーションのルートフォルダの名前、要求パス内のサブフォルダ、および要求したファイル名が含まれます。 |
|
| パラメータ | |
|
|
| 例 | |
次の例では、ユーザーに Path プロパティを表示します。 |
|
Sub Page_Load( ) Dim path As String path = Request.FilePath Message.Text = "The virtual path of the current request is: " & path End Sub |
|
| メモ | |
このプロパティは、本章の前の部分で説明した FilePath プロパティと等価です。 |
|
| PathInfo | |
stringvar = Request.PathInfo | |
現在の要求と共に渡される任意の詳細なパス情報を保持する文字列を返します。詳細なパス情報には、要求したリソースのファイル名の後の URL に付加されるパス情報などが含まれます。 |
|
| パラメータ | |
|
|
| 例 | |
次の例では、クライアントブラウザに Path プロパティと PathInfo プロパティの両方を書き込みます。 |
|
Sub Page_Load( ) Message.Text = "Path = " & Request.Path & "<br/>" Message.Text &= "Additional Path Info = " & Request.PathInfo & "<br/>" End Sub |
|
| メモ | |
PathInfo は、クエリー文字列の値などの情報は返しません。PathInfo は、リソースまたはファイルの名前の後のスラッシュ (/) に続く文字を、スラッシュ自体も含めてすべて返します。 |
|
| PhysicalApplicationPath | |
stringvar = Request.PhysicalApplicationPath | |
現在のアプリケーションのルートへの物理パスを保持する文字列を返します。 |
|
| パラメータ | |
|
|
| 例 | |
次の例では、PhysicalApplicationPath プロパティをブラウザに書き込みます。 |
|
Sub Page_Load( ) Dim physAppPath As String physAppPath = Request.PhysicalApplicationPath Message.Text = "Physical Application Path = " & physAppPath End Sub |
|
| メモ | |
このプロパティは、ファイルの作成やファイルへの書き込みを Web アプリケーション内で行う必要がある場合に役立ちます。ページにファイルシステムのパスをハードコーディングするのではなく、このプロパティとファイル名を組み合わせて使用して、ページの場所とは無関係に、コードが記述されたページと同じフォルダでファイルの作成および編集を行うことができます。 |
|
| PhysicalPath | |
stringvar = Request.PhysicalPath | |
要求したファイルへの物理パスを保持する文字列を返します。 |
|
| パラメータ | |
|
|
| 例 | |
次の例では、PhysicalPath プロパティをブラウザに書き込みます。 |
|
Sub Page_Load( ) Dim physicalPath As String physicalPath = Request.PhysicalPath Message.Text = "Physical Path = " & physicalPath End Sub |
|
| メモ | |
アプリケーションのルートへのパスだけを返す PhysicalApplicationPath とは異なり、PhysicalPath プロパティは、途中のすべてのフォルダやリソースのファイル名を含めて、要求したリソースの物理的なフルパスを返します。このプロパティは、読み取りや書き込みを行おうとしているファイルが見つからない、または作成したファイルが想定した場所に存在しないなどのトラブルシューティングを行う状況では、ASP.NET のトレース機能と組み合わせて使用すると役立ちます。ページに Trace.Write ステートメントを追加して、トレースログに Path プロパティ、PhysicalApplicationPath プロパティ、および PhysicalPath プロパティを書き込むと、このようなバグの追跡に役立ちます。トレースログは Trace="true" 属性を @ Page ディレクティブに追加することにより有効にできます。 |
|
| RawUrl | |
stringvar = Request.RawUrl | |
現在の要求の未加工の URL を保持する文字列を返します。未加工の URL は、ドメイン情報に続く URL 部分から構成されます。したがって、URL http://search.support.microsoft.com/kb/c.asp の場合は、未加工の URL は /kb/c.asp になります。未加工の URL にクエリー文字列が存在する場合はそれも含みます。 |
|
| パラメータ | |
|
|
| 例 | |
次の例では、RawUrl プロパティをブラウザに書き込みます。 |
|
Sub Page_Load( ) Dim stringvar As String stringvar = Request.RawUrl Message.Text = "The raw URL is: " & stringvar End Sub |
|
| RequestType | |
stringvar = Request.RequestType | |
RequestType プロパティは、現在の要求のタイプ (GET や POST など) を保持する文字列を返します。 |
|
| パラメータ | |
|
|
| 例 | |
次の例では、RequestType プロパティをブラウザに書き込みます。 |
|
Sub Page_Load( ) Dim stringvar As String stringvar = Request.RequestType Message.Text = "The request type is: " & stringvar End Sub |
|
| メモ | |
このプロパティは読み取りと書き込みの両用として記載されていますが、このプロパティの値を変更しなければならない状況は実際にはありません。このプロパティを読み取り用とした見た場合は、本章の前の部分で説明した読み取り専用の HttpMethod プロパティと同じ情報を返します。このプロパティの値を変更しても、その変更により HttpMethod の値が変わることはありません。 |
|
| TotalBytes | |
intvar = Request.TotalBytes | |
HTTP 要求の本文のサイズを表す整数値を返します。TotalBytes プロパティには、HTTP 要求ヘッダのサイズ、または GET 要求と共に渡されるクエリー文字列の値のサイズは含まれません。 |
|
| パラメータ | |
|
|
| 例 | |
次の例では、TotalBytes プロパティをブラウザに書き込みます。 |
|
Sub Page_Load( ) Dim intvar As Integer intvar = Request.TotalBytes Message.Text = "The size of the current request body is: <br/>" Message.Text &= intvar & " bytes." End Sub |
|
次のコードを使用して、サンプルページにポストすることができます。 |
|
<html>
<head>
<title>Submit a named parameter via POST</title>
</head>
<body>
<form id="form1" action="TotalBytes.aspx" method="POST">
<h3>Name:</h3>
<input type="text" name="name">
<input type="submit">
</form>
</body>
</html>
|
|
| メモ | |
このプロパティの動作は、本章の前の部分で説明した ContentLength プロパティの動作と等価です。 |
|
| Url | |
uriObj = Request.Url | |
ユーザーが要求した現在の URL を説明するプロパティを保持する Uri クラスのインスタンスを返します。Uri クラスによって公開されるプロパティには、Scheme (プロトコル)、Port、および Host があります。 |
|
| パラメータ | |
|
|
| 例 | |
次の例では、Url プロパティが返す Uri オブジェクトを使用して、現在の要求の URL に関する情報をブラウザに書き込みます。 |
|
Sub Page_Load( ) Dim myUri As Uri myUri = Request.Url Message.Text = "Current request URL info - <br/><br/>" Message.Text &= "Protocol: " & myUri.Scheme & "<br/>" Message.Text &= "Port: " & myUri.Port & "<br/>" Message.Text &= "Host Name: " & myUri.Host & "<br/>" End Sub |
|
| メモ | |
このプロパティが返す Uri クラスには、プロパティだけでなくメソッドもありますが、これらのメソッド (特に CheckHostName メソッドと CheckSchemeName メソッド) を使用するのは、Url プロパティから Uri インスタンスを受け取るときではなく、独自の Uri リソースを最初から作成する場合です。 |
|
URI に関するメモ : URI (Uniform Resource Identifier) は、URL (Uniform Resource Locator) と比較すると、URL および URN のより一般的なバージョンです。現在、多くの場合に URI と URL は同じ意味に使われますが、この状況は URN がより頻繁に使われるようになるにつれて変化していく可能性があります。Url プロパティでは、これらの用語は同じ意味を持ちます。 |
|
| UrlReferrer | |
uriObj = Request.UrlReferrer | |
現在要求されているリソースへのナビゲート元となるリソースの URL を説明するプロパティを保持する Uri クラスのインスタンスを返します。現在のリソースへのナビゲートが行われなかった場合、つまり、現在のリソースに直接アクセスした場合、UrlReferrer プロパティは Nothing を返します。 |
|
| パラメータ | |
|
|
| 例 | |
次の例では、UrlReferrer プロパティが返した Uri オブジェクトを使用して、参照しているリソースの URL に関する情報をブラウザに書き込みます。 |
|
Sub Page_Load( )
Dim myUri As Uri
myUri = Request.UrlReferrer
If Not (myUri Is Nothing) Then
Message.Text = "Referral URL info - <br/><br/>"
Message.Text &= "Protocol: " & myUri.Scheme & "<br/>"
Message.Text &= "Port: " & myUri.Port & "<br/>"
Message.Text &= "Host Name: " & myUri.Host & "<br/>"
Message.Text &= "App Path: " & myUri.AbsolutePath & "<br/>"
Else
Message.Text = "No referral URL info available."
End If
End Sub
|
|
次のコードを使用して、サンプルページにリンクできます。 |
|
<html>
<head>
<title>Link to UrlReferrer</title>
</head>
<body>
<a href="UrlReferrer.aspx">Go to UrlReferrer.aspx</a>
</body>
</html>
|
|
| メモ | |
このコード例では、UrlReferrer プロパティが Uri クラスの有効なインスタンスを返すことを確認します。別のページ上のリンクからではなく、直接ページにアクセスした場合は、UrlReferrer プロパティが Nothing を返します。 |
|
| UserAgent | |
stringvar = Request.UserAgent | |
User-Agent ヘッダを保持する文字列を返します。User-Agent 文字列は、クライアントが要求を行うために使用するブラウザ、または携帯電話などで使用するその他の HTTP 対応のクライアントソフトウェアを識別します。ブラウザやプラットフォームによっては、この文字列により、クライアントが使用するオペレーティングシステムを識別し、また Internet Explorer の場合にはインストールされている .NET Framework のバージョンを識別することができます。 |
|
| パラメータ | |
|
|
| 例 | |
次の例では、UserAgent プロパティをブラウザに書き込みます。 |
|
Sub Page_Load( ) Dim stringvar As String stringvar = Request.UserAgent Message.Text = "User Agent: " & stringvar End Sub |
|
| メモ | |
クライアントブラウザの機能を識別する場合は、通常、Request.Browser プロパティによって返される HttpBrowserCapabilities オブジェクトのプロパティを使用すると容易に識別できます。ただし、特定のクライアントの User-Agent が HttpBrowserCapabilities クラスによって確認されていない情報を返す場合があります。この場合、"machine.config" の <browserCaps> 構成セクションハンドラーに目的の情報を追加し (ASP.NET 構成の詳細については、第 8 章および第 20 章を参照)、次に、組み込みのクラスから継承することによって、また必要な User-Agent 属性用の独自のプロパティを追加することによって、HttpBrowserCapabilities クラスの独自のバージョンを作成します。このような作業を回避したい場合には、UserAgent プロパティを使用して、目的の属性に関する User-Agent 文字列を単に解析することができます。 |
|
| UserHostAddress | |
stringvar = Request.UserHostAddress | |
要求を行ったクライアントの IP アドレス を返します。 |
|
| パラメータ | |
|
|
| 例 | |
次の例では、UserHostAddress、UserHostName、および UserLanguages の各プロパティをブラウザに書き込みます。 |
|
Sub Page_Load( )
Dim HostAddress, HostName, Languages( ) As String
Dim iCounter As Integer
HostAddress = Request.UserHostAddress
HostName = Request.UserHostName
Languages = Request.UserLanguages
Message.Text = "Client IP Address: " & HostAddress & "<br/>"
Message.Text &= "Client Machine Name: " & HostName & "<br/>"
For iCounter = 0 To Languages.GetUpperBound(0)
Message.Text &= "Client Language " & iCounter & ": " & _
CStr(Languages(iCounter)) & "<br/>"
Next iCounter
End Sub
|
|
| UserHostName | |
| パラメータ | |
stringvar = Request.UserHostName |
|
要求を行っているクライアントの DNS ホスト名を保持する文字列 を返します。 |
|
|
|
| 例 | |
UserHostAddress プロパティの例を参照してください。 |
|
| メモ | |
クライアントの IP アドレスを DNS 名に解決する DNS サーバーが利用できない場合、UserHostName プロパティは UserHostAddress プロパティと同様にクライアントの IP アドレスを返します。 |
|
| UserLanguages | |
stringArray = Request.UserLanguages | |
クライアントによってサポートされる言語の一覧を保持する並べ替え済みの文字列配列 を返します。 |
|
| パラメータ | |
|
|
| 例 | |
UserHostAddress プロパティの例を参照してください。 |
|
| メモ | |
このプロパティをテストするために、追加言語のサポートをブラウザに設定できます。 |
|
|
|
これで、UserHostAddress の例にあるコードが記述されたページを参照すると、選択したすべての言語が選択した順に一覧表示されます。 |
|
| Cookies | |
HttpCookieCollection = Request.Cookies | |
Cookies コレクションは、現在の要求の一部として送信された Cookie すべてを保持する HttpCookieCollection クラスのインスタンスを返します。HttpCookieCollection クラスには、クライアント要求の一部として渡された Cookie それぞれに対応する HttpCookie クラスのインスタンスが保持されています。また、Cookie に関する情報にアクセスするには、これら HttpCookie インスタンスのプロパティを利用することができます。 |
|
従来の ASP と同様に、Cookies コレクションは 1 つのコレクションとして実装されます。現に、HttpCookieCollection は .NET NameObjectCollectionBase クラスを継承しています。しかし、ASP.NET が実装するのは、文字列キーと文字列値のコレクションではなく、文字列キーとオブジェクト (HttpCookie クラスのインスタンス) のコレクションです。個々の Cookie は HttpCookie 型の変数に渡されます。また、Cookie の各値にはクラスのプロパティを使用することによってアクセスできます。 |
|
複数の値を持つディクショナリ形式の Cookie には、HttpCookie クラスの Values プロパティを介してアクセスできます。このクラスは、Cookie のサブキーと値を保持する NameValueCollection を返します。また、次の構文のように、個々のキーを使用してそれぞれの値を取得することもできます。 |
|
HttpCookie.Values("keyname")
|
|
| パラメータ | |
|
|
| 例 | |
次の例では、Cookies プロパティから Cookie のコレクションを取得し、各キーと値を、ディクショナリ Cookie の任意のサブキーと共に書き出します。 |
|
Sub Page_Load( )
Dim Counter1, Counter2 As Integer
Dim Keys(), SubKeys( ) As String
Dim CookieColl As HttpCookieCollection
Dim Cookie As HttpCookie
' Get Cookie collection
CookieColl = Request.Cookies
' Get Cookie keys
Keys = CookieColl.AllKeys
' Get cookies by index
For Counter1 = 0 To Keys.GetUpperBound(0)
Cookie = CookieColl(Keys(Counter1))
Message.Text = "Cookie: " & Cookie.Name & "<br/>"
Message.Text &= "Expires: " & Cookie.Expires & "<br/>"
' Get keys for dictionary cookie into an array
SubKeys = Cookie.Values.AllKeys
' Write dictionary cookie values to the browser
For Counter2 = 0 To SubKeys.GetUpperBound(0)
Message.Text &= "Key " & CStr(Counter2) + ": " & _
SubKeys(Counter2) & "<br/>"
Message.Text &= "Value " & CStr(Counter2) + ": " & _
Cookie.Values(Counter2) & "<br/>"
Next Counter2
Message.Text &= "<br/>"
Next Counter1
End Sub
|
|
| メモ | |
ASP が実装する Cookies コレクションおよび Cookies プロパティによって返される HttpCookieCollection クラスは、共通のプロパティセットを公開します。共通のプロパティセットについては、本章の 16.3 項で説明しています。 |
|
ASP.NET の場合も個々の Cookie を Cookie のテキストキーおよび数値インデックスを使用して取得できますが、操作が異なるため、ASP の Cookie 処理コードを ASP.NET に包括的に移行する場合は、大幅な変更が必要になります。たとえば、次のコードでは例外が発生します。 |
|
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
|
|
ASP.NET ではデフォルトで変数および変数の型の両方が必要ですが、このコードではこれらが明示的に宣言されていません。また、Request.Cookies(key) プロパティから返されるのが文字列ではなく HttpCookie インスタンスであるため、このコードは失敗します。文字列を必要とする Response.Write ステートメント用に、HttpCookie インスタンスを文字列に暗黙に変換することはできません。また、Request.Cookies(key) を呼び出しても、ディクショナリ Cookie のサブキーは取得されません。幸い、前述のコードを機能させるための変更は、次に示すようにかなり単純です。 |
|
For Each strKey In Request.Cookies
Message.Text = strKey & " = " & _
Request.Cookies(strKey).ToString( ) & "<br/>"
If Request.Cookies(strKey).HasKeys Then
For Each strSubKey In Request.Cookies(strKey).Values
Message.Text = "->" & strKey & "(" & strSubKey & _
") = " & Request.Cookies(strKey)(strSubKey).ToString( ) _
& "<br/>"
Next
End If
Next
|
|
最初の問題点を解決するには、HttpCookie の Value メソッドを使用して、Cookie の値を文字列として取得します。2 番目の問題点の解決策は、HttpCookie インスタンスの Values プロパティを呼び出すことです。これにより、ディクショナリ Cookie のサブキーを取得できます。 |
|
ASP ではテキストベースで行っていた Cookie のキーや値の操作が、ASP.NET ではクラスベースの操作に変更になったことにより、Cookie に対する読み取りや書き込みを行う場合に、HttpCookie クラスの Expires プロパティを利用できるようになりました。ASP では、Cookie の Expires プロパティの読み取りを試みると、エラーになります。残念ながら、これを執筆している時点では、HttpCookie の Expires プロパティは実際には Cookie の有効期限を返しません。代わりに、値 12:00:00 AM を返します。このことはプロパティが読み取り可能であるにもかかわらず、読み取り用にデザインされていないことを示します。 |
|
最後に、従来の ASP とは異なり、ASP.NET のコレクションはゼロ (0) から始まるので、すべてのコレクションや配列の最初の要素は 1 ではなく 0 になります。このことは、インデックスにより値を取得する際に覚えておく必要のある重要な点です。 |
|
| Files | |
HttpFileCollection = Request.Files | |
ASP.NET で新しく導入された Files コレクションは、ユーザーの現在の要求によってアップロードされるすべてのファイルを保持する HttpFileCollection 型のコレクションを返します。このコレクションは、HtmlInputFile サーバーコントロールと組み合わせて使用すると特に役立ちます。HtmlInputFile サーバーコントロールは、HTTP POST 要求を介してファイルをアップロードするために必要な基本機能を提供します。ユーザーが送信ページの HtmlInputFile コントロールごとにファイルを送信する場合は、Files コレクションを使用することによりファイルを取得できます。 |
|
| パラメータ | |
|
|
| 例 | |
次の例では、2 つの HtmlInputFile サーバーコントロール、およびサーバー側の <script> ブロックを使用して、ファイルのアップロードおよび処理を行います。この例では、ページの <form> セクションとそのコントロール、および HtmlInputButton コントロールの onServerClick イベントによって呼び出される UploadBtn_OnClick メソッドが記述された <script> ブロックの両方を示します。 |
|
<!--Place between the <head> and </head> tags -->
<script runat="server">
Sub UploadBtn_Click(Sender as Object, e as EventArgs)
UploadForm.Visible = False
If InStr(Request.ContentType, "multipart/form-data") Then
Dim Counter1 As Integer
Dim Keys( ) As String
Dim Files As HttpFileCollection
' Load File collection
Files = Request.Files
' Get names of all files into an array
Keys = Files.AllKeys
For Counter1 = 0 To Keys.GetUpperBound(0)
Message.Text &= "File ID: " & Keys(Counter1) & "<br/>"
Message.Text &= "File Name/Path: " & _
Files(Counter1).FileName & "<br/>"
Next Counter1
Else
Message.Text = "Wrong content type!"
End If
End Sub
</script>
<!-- This section resides between the <body> and </body> tags -->
<form id="UploadForm" enctype="multipart/form-data" runat="server">
Select File To Upload to Server:
<br/>
<%-- MyFile and MyFile2 are HtmlInputFile controls --%>
<%-- note the runat attribute --%>
<input id="MyFile" type="file" runat="server">
<br/>
<input id="MyFile2" type="file" runat="server">
<br/>
<input id="Submit1" type="submit" value="Upload!"
onserverclick="UploadBtn_Click" runat="server" >
</form>
<asp:label id="Message" runat="server"/>
|
|
| メモ | |
従来の ASP では、ファイルのアップロードは面倒な作業でした。通常は、受信 ASP ページで使用するサードパーティのアップロードコントロールを探して購入し、アップロードしたファイルの解析および保存を行う必要がありました。Files コレクションにより、サードパーティのコントロールを探し、その使用方法を調べて、ファイルをアップロードする必要がなくなりました。このことは、コントロールのデベロッパーにとっては残念なことですが、新しいサーバーコントロールを作成することによってその損失を十分に補うであろうと思われます。一方、ASP.NET のデベロッパーにとっては喜ばしいことです。 |
|
Files コレクションが正しくファイルをアップロードするために、次の 2 つの重要な点を留意してください。 |
|
|
|
アップロードは、両方の手順を行った場合のみ成功します。コード例では、ファイルの取得を試みる前に、着信要求が multipart/form-data かどうかを確認しています。 |
|
ファイルをアップロードするために HtmlInputFile コントロールを使用する必要はありません。ファイルは、Files コレクションを介して取得できます。送信ページで POST メソッドと multipart/form-data enctype 属性を使用している限り、標準の HTML ファイルの入力タグを使用できます。 |
|
<input type="file" id="myFile" name="myFile"> |
|
name 属性を使用していることに注意してください。この属性を指定しないと、Files コレクションはそのコントロール用にアップロードしたファイルを保持しません。 |
|
| Form | |
NameValueCollection = Request.Form | |
Form コレクションは、HTTP POST 要求と共に渡されたすべてのフォームフィールドを保持する NameValueCollection クラスのインスタンスを返します。このコレクションは、HTTP 要求の Content-Type が application/x-www-form-urlencoded または multipart/form-data のいずれかの場合のみデータを保持します。 |
|
データの送信に使用した HTTP メソッドに応じてデータを取得する方法は 2 つあり、Form コレクションはそのうちの 1 つです。Form コレクションは、method 属性が POST に設定された HTML フォームによって送信されたデータを取得します。一方、QueryString コレクションは、method 属性が GET に設定された HTML フォームによって送信されたデータを取得します。QueryString コレクションについては、本項の後の部分で説明します。 |
|
| パラメータ | |
|
|
| 例 | |
次の例では、ASP.NET により、単一のページから HTTP POST 経由で値を送信し、その値を取得してユーザーに表示する方法を示します。この例では、Page クラスの IsPostBack プロパティを使用して、送信されているフォームの結果による要求かどうかを判断します。要求がポストバックではない場合は、ユーザーが値を入力できるように、フォームフィールドが表示されます。要求がポストバックの場合は、ページにより Form コレクションが取得され、ブラウザに各フィールドの名前と値が表示されます。 |
|
Sub Page_Load( )
If IsPostBack Then
Form1.Visible = False
If Request.HttpMethod = "POST" Then
Dim Counter1 As Integer
Dim Keys( ) As String
Dim FormElements As NameValueCollection
' Get Form keys/elements
FormElements=Request.Form
' Get names of form fields into array
Keys = FormElements.AllKeys
For Counter1 = 0 To Keys.GetUpperBound(0)
Message.Text &= "Form " & Counter1 & " name: " & _
Keys(Counter1) & "<br/>"
Message.Text &= "Form " & Counter1 & " value: " & _
FormElements(Counter1) & "<br/>"
Next Counter1
End If
Else
Form1.Visible = True
End If
End Sub
<!-- This section resides between the <body> and </body> tags -->
<form id="Form1" runat="server">
First Name:
<br/>
<asp:Textbox id="txtFName" runat="server"/>
<br/>
Last Name:
<br/>
<asp:Textbox id="txtLName" runat="server"/>
<br/>
<asp:Button id="Submit" Text="Submit" runat="server"/>
</form>
<asp:label id="Message" runat="server"/>
|
|
| メモ | |
Form コレクションは本章の 16.3 項で説明しているプロパティとメソッドを公開し、さらに次のメソッドを追加しています。 |
|
|
|
| Headers | |
NameValueCollection = Request.Headers | |
Headers コレクションは、現在の要求と共に送信されたすべての HTTP ヘッダを保持する NameValueCollection クラスのインスタンスを返します。このコレクションは、ALL_HTTP キーを指定して Request.ServerVariables コレクションを呼び出すことによって返される情報と同じ情報を提供します。 |
|
| パラメータ | |
|
|
| 例 | |
次の例では、最初に ServerVariables("ALL_HTTP") メソッドを使用し、次に Headers コレクションを使用することによって、要求と共に渡された HTTP ヘッダをブラウザに書き込みます。 |
|
Sub Page_Load( )
Dim AllHttp As String
' Get a String with all the HTTP headers
AllHttp = Request.ServerVariables("ALL_HTTP")
' Use Replace to format the String
AllHttp = Replace(AllHttp, "HTTP", "<br/>HTTP"
Message.Text &= AllHttp & "<br/><br/>"
Dim Counter1, Counter2 As Integer
Dim Keys(), subKeys( ) As String
Dim HeaderColl As NameValueCollection
' Load Headers into NameValueCollection
HeaderColl=Request.Headers
' Get keys into an array
Keys = HeaderColl.AllKeys
For Counter1 = 0 To Keys.GetUpperBound(0)
Message.Text &= "Key: " & Keys(Counter1) & "<br/>"
' Get all values under this key
subKeys = HeaderColl.GetValues(Counter1)
For Counter2 = 0 To subKeys.GetUpperBound(0)
Message.Text &= "Value " & CStr(Counter2) & ": " & _
subKeys(Counter2) & "<br/>"
Next Counter2
Next Counter1
End Sub
|
|
| メモ | |
Headers コレクションは、現在の要求の一部として送信された HTTP ヘッダのみを返し、一方、ServerVariables コレクションは、値が渡されたかどうかにかかわらず、各 HTTP ヘッダのキーを保持します。ServerVariables コレクションについては本項の後の部分で説明します。 |
|
HTTP ヘッダをファイルに書き込むか、またはブラウザに表示するだけであれば、ServerVariables コレクションの方が簡単に使用できる場合があります。名前によって特定の HTTP ヘッダにアクセスする、またはコレクション全体をループする必要がある場合は、Headers コレクションが適しています。 |
|
| Params | |
NameValueCollection = Request.Params | |
Params コレクションは、QueryString、Form、ServerVariables、および Cookies の各コレクションの「キー/値」のペアを保持する NameValueCollection クラスのインスタンスを返します。Params コレクションを使用して、これらのコレクションをすべてファイルやブラウザにダンプできます。また、アプリケーションのトラブルシューティングを行うことができます。さらに、アプリケーションに渡されるフォーム値が GET 経由 (QueryString コレクション) または POST 経由 (Form コレクション) のいずれの経由であるかにかかわらず、そのフォーム値をトラックできます。 |
|
| パラメータ | |
|
|
| 例 | |
次の例では、Params コレクションに含まれるキーと値をブラウザに書き込みます。 |
|
Sub Page_Load( )
Dim Counter1, Counter2 As Integer
Dim Keys(), subKeys( ) As String
Dim ParamColl As NameValueCollection
' Load Params into NameValueCollection
ParamColl=Request.Params
' Get keys into an array
Keys = ParamColl.AllKeys
For Counter1 = 0 To Keys.GetUpperBound(0)
Message.Text &= "Key: " & Keys(Counter1) & "<br/>"
' Get all values under this key
subKeys = ParamColl.GetValues(Counter1)
For Counter2 = 0 To subKeys.GetUpperBound(0)
Message.Text &= "Value " & CStr(Counter2) & ": " & _
subKeys(Counter2) & "<br/>"
Next Counter2
Message.Text &= "<br/>"
Next Counter1
End Sub
|
|
次のコードを使用して、サンプルページにポストすることができます。 |
|
<html>
<head>
<title>Submit a named parameter via POST</title>
</head>
<body>
<form id="form1" action="Params.aspx" method="POST">
<h3>Name:</h3>
<input type="text" name="name">
<input type="submit">
</form>
</body>
</html>
|
|
| メモ | |
コレクションは、次の順序で列挙されます。 |
|
|
|
Form コレクションと QueryString コレクションの両方に値を設定する (POST メソッドを使用して、フォームの action 属性用にクエリー文字列の「名前/値」のペアを URL に追加するなど) ことができますが、通常は両方ではなく、いずれか一方を確認します。 |
|
| QueryString | ||||||||||||
NameValueCollection = Request.QueryString | ||||||||||||
QueryString コレクションは、クエリー文字列の一部として渡されたすべてのキーと値を保持する NameValueCollection クラスのインスタンスを返します。通常、キーと値は POST メソッドではなく、GET メソッドを使用する HTML フォームを送信することにより渡されます。 |
||||||||||||
| パラメータ | ||||||||||||
|
||||||||||||
| 例 | ||||||||||||
次の例では、QueryString コレクションのコンテンツをブラウザに書き込みます。 |
||||||||||||
Sub Page_Load( )
Dim Counter1, Counter2 As Integer
Dim Keys(), subKeys( ) As String
Dim QSColl As NameValueCollection
' Load QS into NameValueCollection
QSColl=Request.QueryString
' Get keys into an array
Keys = QSColl.AllKeys
For Counter1 = 0 To Keys.GetUpperBound(0)
Message.Text &= "Key: " & Keys(Counter1) & "<br/>"
subKeys = QSCol1.GetValues(Counter1) 'Get all values under this key
For Counter2 = 0 To subKeys.GetUpperBound(0)
Message.Text &= "Value " & CStr(Counter2) & ": " & _
subKeys(Counter2) & "<br/>"
Next Counter2
Message.Text &= "<br/>"
Next Counter1
End Sub
|
||||||||||||
次のコードを使用して、サンプルページにポストできます。ここでは、Form の method 属性が GET に設定されています。これは、クエリー文字列の一部として送信されるフォーム値に必要です。 |
||||||||||||
<html>
<head>
<title>Submit a named parameter via POST</title>
</head>
<body>
<form id="form1" action="QueryString.aspx" method="GET">
<h3>Name:</h3>
<input type="text" name="name">
<input type="submit">
</form>
</body>
</html>
|
||||||||||||
| メモ | ||||||||||||
QueryString コレクションの Form コレクションに対する利点の 1 つは、コレクションを使用するために、ユーザーが必ずしもフォームを送信する必要がないことです。クエリー文字列の値は URL に追加されるので、クエリー文字列をページ内のリンクに静的に追加することや、クエリー文字列値が追加されたアンカータグを動的に作成することは比較的簡単です。実際、多くのオンラインストアがこの方法を使用して、商品を表示するようにデザインされたページへのリンクに商品 ID を付加して渡すことでカタログページを運用しています。商品を表示するページは、QueryString コレクションを使用して商品 ID を取得できます。 |
||||||||||||
クエリー文字列の値はプレーンテキストとして URL に付加して渡されるので、POST 操作の結果として渡される値に比べて改ざんに対する脆弱性が高まります。重要なデータまたは改ざんされるとアプリケーションで問題が生じる可能性のあるデータを渡す場合は、そのデータをクエリー文字列に追加する前に値を暗号化するか、または別の方法で値を渡すことを検討する必要があります。 |
||||||||||||
クエリー文字列の処理で使用される、&、?、%、+ などの特定の文字は、「キー/値」のペアで使用される場合、およびクエリー文字列内での特殊文字として機能する場合との間での混乱を避けるために、エンコードする必要があります。次の表に、それぞれの特殊文字のエンコードを示します。 |
||||||||||||
|
||||||||||||
HttpServerUtility クラスが提供する UrlEncode メソッドを使用すると、メソッドに渡された文字列内のすべての特殊文字が適切なエンコードに自動的に置き換えられるので、これらの値を覚えておく必要はありません。HttpServerUtility クラスについては、第 18 章で説明します。 |
||||||||||||
| ServerVariables | |
NameValueCollection = Request.ServerVariables | |
| パラメータ | |
|
|
| 例 | |
次の例では、コレクションに関する前述の例と同様に、ServerVariables コレクションのコンテンツをブラウザに書き込みます。 |
|
Sub Page_Load( )
Dim Counter1, Counter2 As Integer
Dim Keys(), subKeys( ) As String
Dim SVarsColl As NameValueCollection
' Load ServerVariables into NameValueCollection
SVarsColl=Request.ServerVariables
' Get keys into an array
Keys = SVarsColl.AllKeys
For Counter1 = 0 To Keys.GetUpperBound(0)
Message.Text &= "Key: " & Keys(Counter1) & "<br/>"
subKeys = SVarsColl.GetValues(Counter1)
' Get all values under this key
For Counter2 = 0 To subKeys.GetUpperBound(0)
Message.Text &= "Value " & CStr(Counter2) & ": " & _
subKeys(Counter2) & "<br/>"
Next Counter2
Message.Text &= "<br/>"
Next Counter1
End Sub
|
|
| メモ | |
キーがわかっていれば、Keys 全体をループしてすべての値を取得するだけでなく、個別の値にアクセスできます。次の一覧に、ServerVariable コレクションで利用可能なキーを示します。 |
|
|
|
| BinaryRead | |
byteArray = Request.BinaryRead(byteCount) | |
byteCount パラメータで指定されたバイト数が格納されたバイト配列 を返します。 |
|
| パラメータ | |
|
|
| メモ | |
このメソッドによって、従来の ASP アプリケーションとの下位互換性が実現されます。新規の開発では、Files コレクションなどの別の方法を使用して、BinaryRead メソッドを使用した場合と同じ結果を実現することをお勧めします。 |
|
| MapPath | |
stringvar = Request.MapPath(virtualPath) | |
従来の ASP では Server オブジェクトが公開していた MapPath メソッドを使用して、指定された仮想パスに対するサーバー上の物理パスを取得できます。ASP.NET では、MapPath メソッドがオーバーロードされ、前述のコードで示したように、2 つの異なるパラメータセットを使用して呼び出すことができます。従来の ASP と同じ最初の形式では、単純に、マップされた仮想パスを保持する文字列で渡します。2 番目の形式では、相対パスを解決するための基本ディレクトリを指定する baseVirtualDirectory パラメータ、および他のアプリケーションに属する仮想パスをマップできる allowCrossMapping パラメータが追加されています。 |
|
| パラメータ | |
|
|
| 例 | |
次の例では、.NET Framework SDK サンプルの /QuickStart ディレクトリのパスをマップし、その結果をブラウザに書き込みます。 |
|
Sub Page_Load( ) Dim VirPath, PhysPath, BasePath As String Dim BoolCross As Boolean = True VirPath = "/QuickStart" BasePath = "" Message.Text = Request.MapPath(VirPath, BasePath, BoolCross) End Sub |
|
| メモ | |
前述の例では、BoolCross 変数を False に設定し、QuickStart アプリケーションの外部からサンプルコードを呼び出した場合は、HttpException がスローされます。これは、アプリケーション間でパスをマップするためには、このパラメータを True に設定する必要があるからです。 |
|
| SaveAs | |
Request.SaveAs(filename, includeHeaders) | |
要求を保存するパスとファイル名として filename パラメータを使用し、現在の HTTP 要求をディスクに保存します。 |
|
| パラメータ | |
|
|
| 例 | |
次の例では、比較のために HTTP 要求ヘッダをブラウザに書き込み、現在の要求をヘッダ情報なしの場合とヘッダ情報付きの場合の両方で保存します。 |
|
Sub Page_Load( )
Message.Text = Request.Headers
' Save HTTP Request and Headers to a file
Request.SaveAs((Request.PhysicalApplicationPath & _
"HTTPRequest.txt"), True)
' Save HTTP Request to a file
Request.SaveAs((Request.PhysicalApplicationPath & _
"HTTPRequest_NoHeaders.txt"), False)
End Sub
|
|
| メモ | |
このメソッドにより、特定の要求で送信されるすべての情報を確認できるため、デバッグに非常に役立ちます。特に、POST 要求で役立ちます。 |
|