HttpRequest クラス

定義

Web 要求中にクライアントから送信された HTTP 値を ASP.NET で読み取ることができるようにします。Enables ASP.NET to read the HTTP values sent by a client during a Web request.

public ref class HttpRequest sealed
public sealed class HttpRequest
type HttpRequest = class
Public NotInheritable Class HttpRequest
継承
HttpRequest

次の例では、 HttpRequest クラスのプロパティを使用して、現在の要求のインスタンスにアクセスし Request Page ます。The following examples access the HttpRequest instance for the current request by using the Request property of the Page class.

QueryString、、、またはの各コレクションからデータにアクセスするために、簡略化された構文を使用でき Form Cookies ServerVariables ます。You can use simplified syntax for accessing data from the QueryString, Form, Cookies, or ServerVariables collections. を作成でき Request["key"] ます。You can write Request["key"].

最初の例は、ページの読み込み時にクエリ文字列値を取得する方法を示しています。The first example shows how to retrieve a query string value when loading a page.

public partial class AddToCart : Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string rawId = Request["ProductID"];
        int productId;
        if (!String.IsNullOrEmpty(rawId) && int.TryParse(rawId, out productId))
        {
            using (ShoppingCartActions usersShoppingCart = new ShoppingCartActions())
            {
                usersShoppingCart.AddToCart(productId);
            }
        }
        else
        {
            throw new Exception("Tried to call AddToCart.aspx without setting a ProductId.");
        }
        Response.Redirect("ShoppingCart.aspx");
    }
}
Public Class AddToCart
    Inherits Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
        Dim rawId = Request("ProductID")
        Dim productId As Integer
        If Not String.IsNullOrEmpty(rawId) And Integer.TryParse(rawId, productId) Then
            Using usersShoppingCart As New ShoppingCartActions()
                usersShoppingCart.AddToCart(productId)
            End Using

        Else
            Throw New Exception("Tried to call AddToCart.aspx without setting a ProductId.")
        End If
        Response.Redirect("ShoppingCart.aspx")
    End Sub
End Class

次の例では、要求が認証されているかどうかを確認し、生の URL を取得する方法を示します。The next example shows how to check if the request is authenticated and retrieve the raw URL.

public partial class RestrictedPage : Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Request.IsAuthenticated)
        {
            var rawUrl = Request.RawUrl;
            Response.Redirect("/Account/Login?ru=" + Server.HtmlEncode(rawUrl));
        }
    }
}
Public Class RestrictedPage
    Inherits Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
        If Not Request.IsAuthenticated Then
            Dim rawUrl = Request.RawUrl
            Response.Redirect("/Account/Login?ru=" + Server.HtmlEncode(rawUrl))
        End If
    End Sub
End Class

このトピックでは、ソースコードが含まれている Visual Studio Web サイトプロジェクトを ダウンロードできます。A Visual Studio Web site project with source code is available to accompany this topic: Download.

この例では、クラスを使用して、 StreamWriter いくつかのクラスプロパティの値を HttpRequest ファイルに書き込みます。This example uses the StreamWriter class to write the values of several HttpRequest class properties to a file. 文字列型のプロパティの場合、値はファイルに書き込まれるときに HTML エンコードされます。For properties that are of type string, the values are HTML encoded as they are written to the file. コレクションを表すプロパティはループ処理され、そこに含まれる各キーと値のペアがファイルに書き込まれます。Properties that represent a collection are looped through, and each key/value pair that they contain is written to the file.

重要

この例には、ユーザー入力を受け付けるテキスト ボックスがあります。これにより、セキュリティが脆弱になる可能性があります。This example has a text box that accepts user input, which is a potential security threat. 既定では、ASP.NET Web ページによって、ユーザー入力にスクリプトまたは HTML 要素が含まれていないかどうかが検証されます。By default, ASP.NET Web pages validate that user input does not include script or HTML elements. 詳細については、「スクリプトによる攻略の概要」を参照してください。For more information, see Script Exploits Overview.

<%@ Page Language="C#" %>
<%@ import Namespace="System.Threading" %>
<%@ import Namespace="System.IO" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    /* NOTE: To use this sample, create a c:\temp\CS folder,
    *  add the ASP.NET account (in IIS 5.x <machinename>\ASPNET,
    *  in IIS 6.x NETWORK SERVICE), and give it write permissions
    *  to the folder.*/

    private const string INFO_DIR = @"c:\temp\CS\RequestDetails";
    public static int requestCount;

    private void Page_Load(object sender, System.EventArgs e)
    {

        // Create a variable to use when iterating
        // through the UserLanguages property.
        int langCount;

        int requestNumber = Interlocked.Increment(ref requestCount);

        // Create the file to contain information about the request.
        string strFilePath = INFO_DIR + requestNumber.ToString() + @".txt";


        StreamWriter sw = File.CreateText(strFilePath);

        try
        {
// <snippet2>
            // Write request information to the file with HTML encoding.
            sw.WriteLine(Server.HtmlEncode(DateTime.Now.ToString()));
            sw.WriteLine(Server.HtmlEncode(Request.CurrentExecutionFilePath));
            sw.WriteLine(Server.HtmlEncode(Request.ApplicationPath));
            sw.WriteLine(Server.HtmlEncode(Request.FilePath));
            sw.WriteLine(Server.HtmlEncode(Request.Path));
// </snippet2>

// <snippet3>
            // Iterate through the Form collection and write
            // the values to the file with HTML encoding.
            // String[] formArray = Request.Form.AllKeys;
            foreach (string s in Request.Form)
            {
                sw.WriteLine("Form: " + Server.HtmlEncode(s));
            }
// </snippet3>

// <snippet4>
            // Write the PathInfo property value
            // or a string if it is empty.
            if (Request.PathInfo == String.Empty)
            {
                sw.WriteLine("The PathInfo property contains no information.");
            }
            else
            {
                sw.WriteLine(Server.HtmlEncode(Request.PathInfo));
            }
// </snippet4>

// <snippet5>
            // Write request information to the file with HTML encoding.
            sw.WriteLine(Server.HtmlEncode(Request.PhysicalApplicationPath));
            sw.WriteLine(Server.HtmlEncode(Request.PhysicalPath));
            sw.WriteLine(Server.HtmlEncode(Request.RawUrl));
// </snippet5>

// <snippet6>
            // Write a message to the file dependent upon
            // the value of the TotalBytes property.
            if (Request.TotalBytes > 1000)
            {
                sw.WriteLine("The request is 1KB or greater");
            }
            else
            {
                sw.WriteLine("The request is less than 1KB");
            }
// </snippet6>

// <snippet7>
            // Write request information to the file with HTML encoding.
            sw.WriteLine(Server.HtmlEncode(Request.RequestType));
            sw.WriteLine(Server.HtmlEncode(Request.UserHostAddress));
            sw.WriteLine(Server.HtmlEncode(Request.UserHostName));
            sw.WriteLine(Server.HtmlEncode(Request.HttpMethod));
// </snippet7>

// <snippet8>
            // Iterate through the UserLanguages collection and
            // write its HTML encoded values to the file.
            for (langCount=0; langCount < Request.UserLanguages.Length; langCount++)
            {
                sw.WriteLine(@"User Language " + langCount +": " + Server.HtmlEncode(Request.UserLanguages[langCount]));
            }
// </snippet8>
       }

       finally
       {
            // Close the stream to the file.
            sw.Close();
       }

        lblInfoSent.Text = "Information about this request has been sent to a file.";
    }


    private void btnSendInfo_Click(object sender, System.EventArgs e)
    {
        lblInfoSent.Text = "Hello, " + Server.HtmlEncode(txtBoxName.Text) +
          ". You have created a new  request info file.";
    }

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
        <p>
        </p>
        <p>
            Enter your name here:
            <asp:TextBox id="txtBoxName" runat="server"></asp:TextBox>
        </p>
        <p>
            <asp:Button id="btnSendInfo" onclick="btnSendInfo_Click" runat="server" Text="Click Here"></asp:Button>
        </p>
        <p>
            <asp:Label id="lblInfoSent" runat="server"></asp:Label>
        </p>
    </form>
</body>
</html>
<%@ Page Language="VB" %>
<%@ import Namespace="System.Threading" %>
<%@ import Namespace="System.IO" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    '  NOTE: To use this sample, create a c:\temp\CS folder,
    '  add the ASP.NET account (in IIS 5.x <machinename>\ASPNET,
    '  in IIS 6.x NETWORK SERVICE), and give it write permissions
    '  to the folder.

    Private Const INFO_DIR As String = "c:\temp\VB\RequestDetails"
    Public Shared requestCount As Integer

    Private Sub Page_Load(sender As Object, e As System.EventArgs)

        ' Create a variable to use when iterating
        ' through the UserLanguages property.
        Dim langCount As Integer

        ' Create a counter to name the file.
        Dim requestNumber As Integer = _
          Interlocked.Increment(requestCount)

        ' Create the file to contain information about the request.
        Dim strFilePath As String = INFO_DIR & requestNumber.ToString() & ".txt"
        Dim sw As StreamWriter = File.CreateText(strFilePath)

        Try

' <snippet2>
            ' Write request information to the file with HTML encoding.
            sw.WriteLine(Server.HtmlEncode(DateTime.Now.ToString()))
            sw.WriteLine(Server.HtmlEncode(Request.CurrentExecutionFilePath))
            sw.WriteLine(Server.HtmlEncode(Request.ApplicationPath))
            sw.WriteLine(Server.HtmlEncode(Request.FilePath))
            sw.WriteLine(Server.HtmlEncode(Request.Path))
' </snippet2>

' <snippet3>
            ' Iterate through the Form collection and write
            ' the values to the file with HTML encoding.
            For Each s As String In Request.Form
                sw.WriteLine("Form: " & Server.HtmlEncode(s))
            Next s
' </snippet3>

' <snippet4>
            ' Write the PathInfo property value
            ' or a string if it is empty.
            If Request.PathInfo = String.Empty Then
                sw.WriteLine("The PathInfo property contains no information.")
            Else
                sw.WriteLine(Server.HtmlEncode(Request.PathInfo))
            End If
' </snippet4>

' <snippet5>
            ' Write request information to the file with HTML encoding.
            sw.WriteLine(Server.HtmlEncode(Request.PhysicalApplicationPath))
            sw.WriteLine(Server.HtmlEncode(Request.PhysicalPath))
            sw.WriteLine(Server.HtmlEncode(Request.RawUrl))
' </snippet5>

' <snippet6>
            ' Write a message to the file dependent upon
            ' the value of the TotalBytes property.
            If Request.TotalBytes > 1000 Then
                sw.WriteLine("The request is 1KB or greater")
            Else
                sw.WriteLine("The request is less than 1KB")
            End If
' </snippet6>

' <snippet7>
            ' Write request information to the file with HTML encoding.
            sw.WriteLine(Server.HtmlEncode(Request.RequestType))
            sw.WriteLine(Server.HtmlEncode(Request.UserHostAddress))
            sw.WriteLine(Server.HtmlEncode(Request.UserHostName))
            sw.WriteLine(Server.HtmlEncode(Request.HttpMethod))
' </snippet7>

' <snippet8>
            ' Iterate through the UserLanguages collection and
            ' write its HTML encoded values to the file.
            For langCount = 0 To Request.UserLanguages.Length - 1
                sw.WriteLine("User Language " & langCount.ToString() & _
                 ": " & Server.HtmlEncode( _
                     Request.UserLanguages(langCount)))
            Next
' </snippet8>

        Finally
            ' Close the stream to the file.
            sw.Close()
        End Try

        lblInfoSent.Text = _
         "Information about this request has been sent to a file."
    End Sub 'Page_Load



    Private Sub btnSendInfo_Click(sender As Object, e As System.EventArgs)
        lblInfoSent.Text = _
         "Hello, " & Server.HtmlEncode(txtBoxName.Text) & _
          ". You have created a new  request info file."
    End Sub 'btnSendInfo_Click

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
        <p>
        </p>
        <p>
            Enter your name here:
            <asp:TextBox id="txtBoxName" runat="server"></asp:TextBox>
        </p>
        <p>
            <asp:Button id="btnSendInfo" onclick="btnSendInfo_Click" runat="server" Text="Click Here"></asp:Button>
        </p>
        <p>
            <asp:Label id="lblInfoSent" runat="server"></asp:Label>
        </p>
    </form>
</body>
</html>

注釈

クラスのメソッドとプロパティ HttpRequestRequest 、、、、およびの各クラスのプロパティを通じて公開され HttpApplication HttpContext Page UserControl ます。The methods and properties of the HttpRequest class are exposed through the Request properties of the HttpApplication, HttpContext, Page, and UserControl classes.

、、、またはの各コレクションのデータにアクセスするには、 QueryString Form Cookies ServerVariables Request["key"] プロパティの例に示すように、を記述し QueryString ます。To access data from the QueryString, Form, Cookies, or ServerVariables collections, you can write Request["key"], as shown in the example for the QueryString property.

注意

クラスメンバーに対する Unicode のサポートに HttpRequest は、IIS バージョン6.0 以降が必要です。Unicode support for HttpRequest class members requires IIS version 6.0 or later.

コンストラクター

HttpRequest(String, String, String)

HttpRequest オブジェクトを初期化します。Initializes an HttpRequest object.

プロパティ

AcceptTypes

クライアントにサポートされている MIME で使用できる型の文字列配列を取得します。Gets a string array of client-supported MIME accept types.

AnonymousID

存在する場合は、ユーザーの匿名 ID を取得します。Gets the anonymous identifier for the user, if present.

ApplicationPath

サーバーの ASP.NET アプリケーションの仮想アプリケーション ルート パスを取得します。Gets the ASP.NET application's virtual application root path on the server.

AppRelativeCurrentExecutionFilePath

アプリケーション ルートの仮想パスを取得し、チルダ (~) 表記 ("~/page.aspx" など) を使用した、アプリケーション ルートの相対パスにします。Gets the virtual path of the application root and makes it relative by using the tilde (~) notation for the application root (as in "~/page.aspx").

Browser

要求を実行中のクライアントのブラウザーの性能に関する情報を取得または設定します。Gets or sets information about the requesting client's browser capabilities.

ClientCertificate

現在、要求しているクライアントのセキュリティ証明書を取得します。Gets the current request's client security certificate.

ContentEncoding

エンティティ本体の文字セットを取得または設定します。Gets or sets the character set of the entity-body.

ContentLength

クライアントから送信されたコンテンツの長さをバイト単位で指定します。Specifies the length, in bytes, of content sent by the client.

ContentType

受信要求で使用する MIME の Content-Type を取得または設定します。Gets or sets the MIME content type of the incoming request.

Cookies

クライアントから送信されたクッキーのコレクションを取得します。Gets a collection of cookies sent by the client.

CurrentExecutionFilePath

現在の要求の仮想パスを取得します。Gets the virtual path of the current request.

CurrentExecutionFilePathExtension

CurrentExecutionFilePath プロパティで指定されているファイル名の拡張子を取得します。Gets the extension of the file name that is specified in the CurrentExecutionFilePath property.

FilePath

現在の要求の仮想パスを取得します。Gets the virtual path of the current request.

Files

マルチパート MIME 形式でクライアントによってアップロードされたファイルのコレクションを取得します。Gets the collection of files uploaded by the client, in multipart MIME format.

Filter

現在の入力ストリームを読み取るときに使用するフィルターを取得または設定します。Gets or sets the filter to use when reading the current input stream.

Form

フォーム変数のコレクションを取得します。Gets a collection of form variables.

Headers

HTTP ヘッダーのコレクションを取得します。Gets a collection of HTTP headers.

HttpChannelBinding

現在の ChannelBinding インスタンスの HttpWorkerRequest オブジェクトを取得します。Gets the ChannelBinding object of the current HttpWorkerRequest instance.

HttpMethod

クライアントによって使用される HTTP データ転送メソッド (GETPOSTHEAD など) を取得します。Gets the HTTP data transfer method (such as GET, POST, or HEAD) used by the client.

InputStream

受信 HTTP エンティティ本体の内容を取得します。Gets the contents of the incoming HTTP entity body.

IsAuthenticated

要求が認証されているかどうかを示す値を取得します。Gets a value indicating whether the request has been authenticated.

IsLocal

要求がローカル コンピューターから送信されたかどうかを示す値を取得します。Gets a value indicating whether the request is from the local computer.

IsSecureConnection

セキュリティ設定されたソケットを HTTP 接続で使用しているかどうか (つまり、HTTPS かどうか) を示す値を取得します。Gets a value indicating whether the HTTP connection uses secure sockets (that is, HTTPS).

Item[String]

QueryStringFormCookies、または ServerVariables の各コレクションから指定したオブジェクトを取得します。Gets the specified object from the QueryString, Form, Cookies, or ServerVariables collections.

LogonUserIdentity

現在のユーザーに対する WindowsIdentity の種類を取得します。Gets the WindowsIdentity type for the current user.

Params

QueryStringFormCookies、および ServerVariables の各項目が組み合わされたコレクションを取得します。Gets a combined collection of QueryString, Form, Cookies, and ServerVariables items.

Path

現在の要求の仮想パスを取得します。Gets the virtual path of the current request.

PathInfo

URL 拡張子付きリソースの追加パス情報を取得します。Gets the additional path information for a resource with a URL extension.

PhysicalApplicationPath

現在実行しているサーバー アプリケーションのルート ディレクトリの物理ファイル システム パスを取得します。Gets the physical file system path of the currently executing server application's root directory.

PhysicalPath

要求された URL に一致する物理ファイル システム パスを取得します。Gets the physical file system path corresponding to the requested URL.

QueryString

HTTP クエリ文字列変数のコレクションを取得します。Gets the collection of HTTP query string variables.

RawUrl

現在の要求の生の URL を取得します。Gets the raw URL of the current request.

ReadEntityBodyMode

要求エンティティ本体が読み取られたかどうかおよび読み取った方法 (読み取られた場合) を示す値を取得します。Gets a value that indicates whether the request entity body has been read, and if so, how it was read.

RequestContext

現在の要求の RequestContext インスタンスを取得します。Gets the RequestContext instance of the current request.

RequestType

クライアントによって使用される HTTP データ転送メソッド (GET または POST) を取得または設定します。Gets or sets the HTTP data transfer method (GET or POST) used by the client.

ServerVariables

Web サーバー変数のコレクションを取得します。Gets a collection of Web server variables.

TimedOutToken

要求がタイムアウトするとトリップされる CancellationToken オブジェクトを取得します。Gets a CancellationToken object that is tripped when a request times out.

TlsTokenBindingInfo

TLS トークンのバインド情報を取得します。Gets the TLS token binding information. このプロパティによりアプリケーションは、強化された認証のために受信 HTTP 要求からトークンの情報を取得できます。The property enables applications to retrieve token information from incoming HTTP requests for enhanced authentication.

TotalBytes

現在の入力ストリームのバイト数を取得します。Gets the number of bytes in the current input stream.

Unvalidated

要求の検証をトリガーせずに HTTP 要求値を取得します。Gets the HTTP request values without triggering request validation.

Url

現在の要求の URL に関する情報を取得します。Gets information about the URL of the current request.

UrlReferrer

現在の URL にリンクされている、クライアントが前回要求した URL に関する情報を取得します。Gets information about the URL of the client's previous request that linked to the current URL.

UserAgent

提供されているクライアント ブラウザーの生のユーザー エージェント文字列を取得します。Gets the raw user agent string of the client browser that has been provided. null も指定できる点にご注意ください。Please note it may be null.

UserHostAddress

リモート クライアントの IP ホスト アドレスを取得します。Gets the IP host address of the remote client.

UserHostName

リモート クライアントの DNS 名を取得します。Gets the DNS name of the remote client.

UserLanguages

クライアントの言語設定の並べ替えられた文字列配列を取得します。Gets a sorted string array of client language preferences.

メソッド

Abort()

基になっている TCP 接続を強制的に終了します。未処理の I/O は失敗します。Forcibly terminates the underlying TCP connection, causing any outstanding I/O to fail. 悪意のある HTTP クライアントによる攻撃に対してこのメソッドを使用できます。You might use this method in response to an attack by a malicious HTTP client.

BinaryRead(Int32)

現在の入力ストリームから、指定したバイト数のバイナリ読み取りを実行します。Performs a binary read of a specified number of bytes from the current input stream.

Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。Determines whether the specified object is equal to the current object.

(継承元 Object)
GetBufferedInputStream()

受信 HTTP エンティティ本体を読み取るために使用できる Stream オブジェクトを取得します。Gets a Stream object that can be used to read the incoming HTTP entity body.

GetBufferlessInputStream()

受信 HTTP エンティティ本体を読み取るために使用できる Stream オブジェクトを取得します。Gets a Stream object that can be used to read the incoming HTTP entity body.

GetBufferlessInputStream(Boolean)

受信 HTTP エンティティ本体を読み取るために使用できる Stream オブジェクトを取得し、オプションで MaxRequestLength プロパティに設定した要求の期間の制限を無効にします。Gets a Stream object that can be used to read the incoming HTTP entity body, optionally disabling the request-length limit that is set in the MaxRequestLength property.

GetHashCode()

既定のハッシュ関数として機能します。Serves as the default hash function.

(継承元 Object)
GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(継承元 Object)
InsertEntityBody()

HTTP 要求エンティティ本体のコピーを IIS に提供します。Provides IIS with a copy of the HTTP request entity body.

InsertEntityBody(Byte[], Int32, Int32)

HTTP 要求エンティティ本体のコピーおよび要求エンティティ オブジェクトについての情報を IIS に提供します。Provides IIS with a copy of the HTTP request entity body and with information about the request entity object.

MapImageCoordinates(String)

インカミング イメージ フィールド フォーム パラメーターを、該当する x 座標値および y 座標値に割り当てます。Maps an incoming image-field form parameter to appropriate x-coordinate and y-coordinate values.

MapPath(String)

指定された仮想パスを物理パスに割り当てます。Maps the specified virtual path to a physical path.

MapPath(String, String, Boolean)

指定された仮想パスを物理パスに割り当てます。Maps the specified virtual path to a physical path.

MapRawImageCoordinates(String)

着信イメージ フィールド フォーム パラメーターを、適切な x 座標値および y 座標値にマップします。Maps an incoming image field form parameter into appropriate x and y coordinate values.

MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(継承元 Object)
SaveAs(String, Boolean)

HTTP 要求をディスクに保存します。Saves an HTTP request to disk.

ToString()

現在のオブジェクトを表す文字列を返します。Returns a string that represents the current object.

(継承元 Object)
ValidateInput()

CookiesForm、および QueryString の各プロパティを通じてアクセスするコレクションに対して検証を実行します。Causes validation to occur for the collections accessed through the Cookies, Form, and QueryString properties.

適用対象