HttpRequest Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Permet ASP.NET de lire les valeurs HTTP envoyées par un client pendant 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 une syntaxe simplifiée pour accéder aux données à partir des collections, ou ServerVariables les QueryStringFormCookiesdonnées. 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 demande 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
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, car elles sont écrites dans le fichier. Les propriétés qui représentent une collection sont en boucle et chaque paire clé/valeur qu’elles contiennent est écrite dans le fichier.
Important
Cet exemple contient une zone de texte qui accepte l’entrée utilisateur, qui est une menace de sécurité potentielle. Par défaut, ASP.NET pages web valident que l’entrée utilisateur n’inclut pas de script ou d’éléments HTML. Pour plus d’informations, consultez Vue d’ensemble des exploits 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 par le Request biais des propriétés des classes, et HttpContextPageUserControl des HttpApplicationpropriétés.
Pour accéder aux données à partir de la QueryStringpropriété , Formou ServerVariablesCookiesdes collections, vous pouvez écrireRequest["key"], comme indiqué dans l’exemple de la QueryString propriété.
Note
La prise en charge Unicode pour HttpRequest les membres de classe nécessite IIS version 6.0 ou ultérieure.
Constructeurs
| Nom | Description |
|---|---|
| HttpRequest(String, String, String) |
Initialise un HttpRequest objet. |
Propriétés
| Nom | Description |
|---|---|
| AcceptTypes |
Obtient un tableau de chaînes de types d’acceptation MIME pris en charge par le client. |
| AnonymousID |
Obtient l’identificateur anonyme de l’utilisateur, le cas échéant. |
| ApplicationPath |
Obtient le chemin racine de l’application virtuelle 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 à l’aide de la notation tilde (~) pour la racine de l’application (comme dans « ~/page.aspx »). |
| Browser |
Obtient ou définit des informations sur les fonctionnalités de navigateur du client demandeur. |
| ClientCertificate |
Obtient le certificat de sécurité client de la requête actuelle. |
| ContentEncoding |
Obtient ou définit le jeu de caractères du corps d’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és 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 CurrentExecutionFilePath propriété. |
| FilePath |
Obtient le chemin d’accès virtuel de la requête actuelle. |
| Files |
Obtient la collection de fichiers chargés par le client, au format MIME multipart. |
| Filter |
Obtient ou définit le filtre à utiliser lors de la lecture du flux d’entrée actuel. |
| 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 HttpWorkerRequest . |
| HttpMethod |
Obtient la méthode de transfert de données HTTP (par exemple |
| InputStream |
Obtient le contenu du corps de l’entité HTTP entrante. |
| IsAuthenticated |
Obtient une valeur indiquant si la demande a été authentifiée. |
| IsLocal |
Obtient une valeur indiquant si la requête provient de l’ordinateur local. |
| IsSecureConnection |
Obtient une valeur indiquant si la connexion HTTP utilise des sockets sécurisés (c’est-à-dire HTTPS). |
| Item[String] |
Obtient l’objet spécifié de l’objet QueryString, ou FormCookiesServerVariables des collections. |
| LogonUserIdentity |
Obtient le WindowsIdentity type de l’utilisateur actuel. |
| Params |
Obtient une collection combinée d’éléments, et d’élémentsQueryStringCookiesFormServerVariables. |
| Path |
Obtient le chemin d’accès virtuel de la requête actuelle. |
| PathInfo |
Obtient les informations de chemin d’accès supplémentaires pour une ressource avec une extension d’URL. |
| PhysicalApplicationPath |
Obtient le chemin du système de fichiers physique du répertoire racine de l’application serveur en cours d’exécution. |
| PhysicalPath |
Obtient le chemin du système de fichiers physique correspondant à l’URL demandée. |
| QueryString |
Obtient la collection de 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 de l’entité de requête a été lu et, le cas échéant, 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 ( |
| ServerVariables |
Obtient une collection de variables de serveur web. |
| TimedOutToken |
Obtient un CancellationToken objet qui est triplé lorsqu’une requête expire. |
| TlsTokenBindingInfo |
Obtient les informations de liaison de jeton TLS. La propriété permet aux applications de récupérer des informations de jeton à partir de 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 la demande. |
| Url |
Obtient des informations sur l’URL de la requête actuelle. |
| UrlReferrer |
Obtient des informations sur l’URL de la demande précédente du client liée à l’URL actuelle. |
| UserAgent |
Obtient la chaîne d’agent utilisateur brute du navigateur client fourni. Notez qu’il peut s’agir de 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é des préférences linguistiques du client. |
Méthodes
| Nom | Description |
|---|---|
| Abort() |
Met fin de force à la connexion TCP sous-jacente, ce qui entraîne 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) |
Effectue une lecture binaire d’un nombre spécifié d’octets à partir du flux d’entrée actuel. |
| Equals(Object) |
Détermine si l’objet spécifié est égal à l’objet actuel. (Hérité de Object) |
| GetBufferedInputStream() |
Obtient un Stream objet qui peut être utilisé pour lire le corps de l’entité HTTP entrante. |
| GetBufferlessInputStream() |
Obtient un Stream objet qui peut être utilisé pour lire le corps de l’entité HTTP entrante. |
| GetBufferlessInputStream(Boolean) |
Obtient un Stream objet qui peut être utilisé pour lire le corps d’entité HTTP entrant, en désactivant éventuellement la limite de longueur de requête définie dans la MaxRequestLength propriété. |
| GetHashCode() |
Sert de fonction de hachage par défaut. (Hérité de Object) |
| GetType() |
Obtient la Type de l’instance actuelle. (Hérité de Object) |
| InsertEntityBody() |
Fournit à IIS une copie du corps de l’entité de requête HTTP. |
| InsertEntityBody(Byte[], Int32, Int32) |
Fournit à IIS une copie du corps de l’entité de requête HTTP et des informations sur l’objet d’entité de requête. |
| MapImageCoordinates(String) |
Mappe un paramètre de formulaire de champ image entrant aux valeurs de coordonnées x et y appropriées. |
| MapPath(String, String, Boolean) |
Mappe le chemin virtuel spécifié à un chemin d’accès physique. |
| MapPath(String) |
Mappe le chemin virtuel spécifié à un chemin d’accès physique. |
| MapRawImageCoordinates(String) |
Mappe un paramètre de formulaire de champ d’image entrant en valeurs de coordonnées x et y appropriées. |
| MemberwiseClone() |
Crée une copie superficielle du Objectactuel. (Hérité de Object) |
| SaveAs(String, Boolean) |
Enregistre une requête HTTP sur le disque. |
| ToString() |
Retourne une chaîne qui représente l’objet actuel. (Hérité de Object) |
| ValidateInput() |
Provoque la validation pour les regroupements accessibles via les propriétés et FormQueryString les Cookiespropriétés. |