Partager via


HttpRequest Classe

Définition

Permet à ASP.NET de lire les valeurs HTTP envoyées par un client dans le cadre d'une requête web.

public ref class HttpRequest sealed
public sealed class HttpRequest
type HttpRequest = class
Public NotInheritable Class HttpRequest
Héritage
HttpRequest

Exemples

Les exemples suivants accèdent à l’instance HttpRequest de la requête actuelle à l’aide de la Request propriété de la Page classe .

Vous pouvez utiliser la syntaxe simplifiée pour accéder aux données à partir des QueryStringcollections , Form, Cookiesou ServerVariables . Vous pouvez écrire Request["key"].

Le premier exemple montre comment récupérer une valeur de chaîne de requête lors du chargement d’une 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

L’exemple suivant montre comment vérifier si la requête est authentifiée et récupérer l’URL brute.

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

Un projet de site Web Visual Studio avec du code source est disponible pour accompagner cette rubrique : Télécharger.

Cet exemple utilise la StreamWriter classe pour écrire les valeurs de plusieurs HttpRequest propriétés de classe dans un fichier. Pour les propriétés de type chaîne, les valeurs sont encodées au format HTML à mesure qu’elles sont écrites dans le fichier. Les propriétés qui représentent une collection sont bouclé et chaque paire clé/valeur qu’elles contiennent est écrite dans le fichier.

Important

Cet exemple comprend une zone de texte qui accepte une entrée d'utilisateur, ce qui constitue une menace potentielle pour la sécurité. Par défaut, les pages web ASP.NET vérifient que l’entrée d’utilisateur n’inclut pas de script ou d’éléments HTML. Pour plus d’informations, consultez Vue d’ensemble des attaques de script.

<%@ 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>

Remarques

Les méthodes et les propriétés de la HttpRequest classe sont exposées via les Request propriétés des HttpApplicationclasses , HttpContext, Pageet UserControl .

Pour accéder aux données des QueryStringcollections , Form, Cookiesou ServerVariables , vous pouvez écrire Request["key"], comme indiqué dans l’exemple de la QueryString propriété .

Notes

La prise en charge d’Unicode pour HttpRequest les membres de classe nécessite IIS version 6.0 ou ultérieure.

Constructeurs

HttpRequest(String, String, String)

Initialise un objet HttpRequest.

Propriétés

AcceptTypes

Obtient un tableau de chaînes contenant les types MIME pris en charge par le client.

AnonymousID

Obtient l'identificateur anonyme de l'utilisateur, s'il existe.

ApplicationPath

Obtient le chemin d’accès racine virtuel de l’application ASP.NET sur le serveur.

AppRelativeCurrentExecutionFilePath

Obtient le chemin d’accès virtuel de la racine de l’application et le rend relatif en utilisant un tilde (~) à la racine de l’application (par exemple « ~/page.aspx »).

Browser

Obtient ou définit des informations sur les fonctionnalités de navigation du client demandeur.

ClientCertificate

Obtient le certificat de sécurité du client pour la requête actuelle.

ContentEncoding

Obtient ou définit le jeu de caractères du corps de l'entité.

ContentLength

Spécifie la longueur en octets du contenu envoyé par le client.

ContentType

Obtient ou définit le type de contenu MIME de la requête entrante.

Cookies

Obtient une collection de cookies envoyée par le client.

CurrentExecutionFilePath

Obtient le chemin d'accès virtuel de la requête actuelle.

CurrentExecutionFilePathExtension

Obtient l'extension du nom de fichier spécifié dans la propriété CurrentExecutionFilePath.

FilePath

Obtient le chemin d'accès virtuel de la requête actuelle.

Files

Obtient la collection des fichiers téléchargés par le client (format Multipart MIME).

Filter

Obtient ou définit le filtre à utiliser lors de la lecture du flux d'entrée actif.

Form

Obtient une collection de variables de formulaire.

Headers

Obtient une collection d’en-têtes HTTP.

HttpChannelBinding

Obtient l'objet ChannelBinding de l'instance actuelle de HttpWorkerRequest.

HttpMethod

Obtient la méthode de transfert de données HTTP (par exemple : GET, POST ou HEAD) utilisée par le client.

InputStream

Obtient le contenu du corps de l'entité HTTP entrante.

IsAuthenticated

Obtient une valeur indiquant si la requête a été authentifiée.

IsLocal

Obtient une valeur indiquant si la requête provient d'un ordinateur local.

IsSecureConnection

Obtient une valeur indiquant si la connexion HTTP est sécurisée (c'est-à-dire de type HTTPS).

Item[String]

Obtient l'objet spécifié des collections QueryString, Form, Cookies ou ServerVariables.

LogonUserIdentity

Obtient le type WindowsIdentity pour l'utilisateur actuel.

Params

Obtient une collection combinée d'éléments QueryString, Form, Cookies et ServerVariables.

Path

Obtient le chemin d'accès virtuel de la requête actuelle.

PathInfo

Obtient des informations supplémentaires sur le chemin d’accès d’une ressource avec extension URL.

PhysicalApplicationPath

Obtient le chemin d'accès physique, dans le système de fichiers, du répertoire racine de l'application serveur en cours d'exécution.

PhysicalPath

Obtient le chemin d'accès physique, dans le système de fichiers, correspondant à l'URL demandée.

QueryString

Obtient la collection des variables de chaîne de requête HTTP.

RawUrl

Obtient l'URL brute de la requête actuelle.

ReadEntityBodyMode

Obtient une valeur qui indique si le corps d'entité de requête a été lu et, si tel est le cas, comment il a été lu.

RequestContext

Obtient l'instance RequestContext de la requête actuelle.

RequestType

Obtient ou définit la méthode de transfert de données HTTP (GET ou POST) utilisée par le client.

ServerVariables

Obtient une collection des variables de serveur web.

TimedOutToken

Obtient un objet CancellationToken dépassé lors de l'expiration d'une requête.

TlsTokenBindingInfo

Obtient les informations de liaison de jeton TLS. La propriété permet aux applications de récupérer des informations de jeton dans les requêtes HTTP entrantes pour une authentification améliorée.

TotalBytes

Obtient le nombre d'octets dans le flux d'entrée actuel.

Unvalidated

Obtient les valeurs de requête HTTP sans déclencher la validation de requête.

Url

Obtient des informations sur l'URL de la requête actuelle.

UrlReferrer

Obtient des informations sur l'URL de la précédente requête du client qui était liée à l'URL actuelle.

UserAgent

Obtient la chaîne d’agent utilisateur brute du navigateur client qui a été fournie. Notez qu’elle peut être Null.

UserHostAddress

Obtient l'adresse d'hôte IP du client distant.

UserHostName

Obtient le nom DNS du client distant.

UserLanguages

Obtient un tableau de chaînes trié contenant les préférences de langue du client.

Méthodes

Abort()

Termine de force la connexion TCP sous-jacente, entraînant l'échec des E/S en attente. Vous pouvez utiliser cette méthode en réponse à une attaque par un client HTTP malveillant.

BinaryRead(Int32)

Exécute une lecture binaire d'un nombre spécifié d'octets du flux d'entrée actif.

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
GetBufferedInputStream()

Obtient un objet Stream qui permet de lire le corps de l'entité HTTP entrante.

GetBufferlessInputStream()

Obtient un objet Stream qui permet de lire le corps de l'entité HTTP entrante.

GetBufferlessInputStream(Boolean)

Obtient un objet Stream qui peut être utilisé pour lire le corps d'entité HTTP entrant, en désactivant éventuellement la longueur maximale des requêtes définie dans la propriété MaxRequestLength.

GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
InsertEntityBody()

Fournit à IIS une copie du corps d'entité de la requête HTTP.

InsertEntityBody(Byte[], Int32, Int32)

Fournit à IIS une copie du corps d'entité de la requête HTTP et des informations à propos de l'objet d'entité de la requête.

MapImageCoordinates(String)

Mappe un paramètre de formulaire avec champ image entrant aux valeurs de coordonnées x/y appropriées.

MapPath(String)

Mappe le chemin d'accès virtuel spécifié à un chemin d'accès physique.

MapPath(String, String, Boolean)

Mappe le chemin d'accès virtuel spécifié à un chemin d'accès physique.

MapRawImageCoordinates(String)

Mappe un paramètre de formulaire avec champ image entrant aux valeurs de coordonnées x/y appropriées.

MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
SaveAs(String, Boolean)

Enregistre une requête HTTP sur disque.

ToString()

Retourne une chaîne qui représente l'objet actuel.

(Hérité de Object)
ValidateInput()

Génère la validation des collections accessibles via les propriétés Cookies, Form et QueryString.

S’applique à