HttpRequest Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Permite ASP.NET leer los valores HTTP enviados por un cliente durante una solicitud web.
public ref class HttpRequest sealed
public sealed class HttpRequest
type HttpRequest = class
Public NotInheritable Class HttpRequest
- Herencia
-
HttpRequest
Ejemplos
Los ejemplos siguientes acceden a la HttpRequest instancia de la solicitud actual mediante la Request propiedad de la Page clase .
Puede usar la sintaxis simplificada para acceder a los datos de las QueryStringcolecciones , Form, Cookieso ServerVariables . Puede escribir Request["key"].
En el primer ejemplo se muestra cómo recuperar un valor de cadena de consulta al cargar una página.
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
En el ejemplo siguiente se muestra cómo comprobar si la solicitud está autenticada y recuperar la dirección URL sin procesar.
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
En este ejemplo se usa la StreamWriter clase para escribir los valores de varias HttpRequest propiedades de clase en un archivo. En el caso de las propiedades que son de tipo cadena, los valores se codifican en HTML a medida que se escriben en el archivo. Las propiedades que representan una colección se recorren en bucle y cada par clave-valor que contienen se escribe en el archivo.
Importante
Este ejemplo tiene un cuadro de texto que acepta la entrada del usuario, que es una amenaza de seguridad potencial. De forma predeterminada, ASP.NET páginas web validan que la entrada del usuario no incluye elementos HTML ni de script. Para obtener más información, consulte Información general sobre vulnerabilidades de seguridad 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>
Comentarios
Los métodos y propiedades de la HttpRequest clase se exponen a través de las Request propiedades de las HttpApplicationclases , HttpContext, Pagey UserControl .
Para acceder a los datos de las QueryStringcolecciones , Form, Cookies, o ServerVariables , puede escribir Request["key"], como se muestra en el ejemplo de la QueryString propiedad .
Nota:
La compatibilidad con Unicode para HttpRequest los miembros de clase requiere iiS versión 6.0 o posterior.
Constructores
| Nombre | Description |
|---|---|
| HttpRequest(String, String, String) |
Inicializa un HttpRequest objeto . |
Propiedades
| Nombre | Description |
|---|---|
| AcceptTypes |
Obtiene una matriz de cadenas de tipos de aceptación de MIME compatibles con el cliente. |
| AnonymousID |
Obtiene el identificador anónimo del usuario, si está presente. |
| ApplicationPath |
Obtiene la ruta de acceso raíz de la aplicación virtual de la aplicación ASP.NET en el servidor. |
| AppRelativeCurrentExecutionFilePath |
Obtiene la ruta de acceso virtual de la raíz de la aplicación y la convierte en relativa mediante la notación tilde (~) para la raíz de la aplicación (como en "~/page.aspx"). |
| Browser |
Obtiene o establece información sobre las funcionalidades del explorador del cliente solicitante. |
| ClientCertificate |
Obtiene el certificado de seguridad de cliente de la solicitud actual. |
| ContentEncoding |
Obtiene o establece el juego de caracteres del cuerpo de la entidad. |
| ContentLength |
Especifica la longitud, en bytes, del contenido enviado por el cliente. |
| ContentType |
Obtiene o establece el tipo de contenido MIME de la solicitud entrante. |
| Cookies |
Obtiene una colección de cookies enviadas por el cliente. |
| CurrentExecutionFilePath |
Obtiene la ruta de acceso virtual de la solicitud actual. |
| CurrentExecutionFilePathExtension |
Obtiene la extensión del nombre de archivo especificado en la CurrentExecutionFilePath propiedad . |
| FilePath |
Obtiene la ruta de acceso virtual de la solicitud actual. |
| Files |
Obtiene la colección de archivos cargados por el cliente, en formato MIME de varias partes. |
| Filter |
Obtiene o establece el filtro que se va a usar al leer el flujo de entrada actual. |
| Form |
Obtiene una colección de variables de formulario. |
| Headers |
Obtiene una colección de encabezados HTTP. |
| HttpChannelBinding |
Obtiene el ChannelBinding objeto de la instancia actual HttpWorkerRequest . |
| HttpMethod |
Obtiene el método de transferencia de datos HTTP (como |
| InputStream |
Obtiene el contenido del cuerpo de la entidad HTTP entrante. |
| IsAuthenticated |
Obtiene un valor que indica si la solicitud se ha autenticado. |
| IsLocal |
Obtiene un valor que indica si la solicitud procede del equipo local. |
| IsSecureConnection |
Obtiene un valor que indica si la conexión HTTP usa sockets seguros (es decir, HTTPS). |
| Item[String] |
Obtiene el objeto especificado de las QueryStringcolecciones , Form, Cookieso ServerVariables . |
| LogonUserIdentity |
Obtiene el WindowsIdentity tipo del usuario actual. |
| Params |
Obtiene una colección combinada de QueryStringelementos , Form, Cookiesy ServerVariables . |
| Path |
Obtiene la ruta de acceso virtual de la solicitud actual. |
| PathInfo |
Obtiene la información de ruta de acceso adicional de un recurso con una extensión de dirección URL. |
| PhysicalApplicationPath |
Obtiene la ruta de acceso del sistema de archivos físico del directorio raíz de la aplicación de servidor que se está ejecutando actualmente. |
| PhysicalPath |
Obtiene la ruta de acceso del sistema de archivos físico correspondiente a la dirección URL solicitada. |
| QueryString |
Obtiene la colección de variables de cadena de consulta HTTP. |
| RawUrl |
Obtiene la dirección URL sin procesar de la solicitud actual. |
| ReadEntityBodyMode |
Obtiene un valor que indica si se ha leído el cuerpo de la entidad de solicitud y, si es así, cómo se leyó. |
| RequestContext |
Obtiene la RequestContext instancia de la solicitud actual. |
| RequestType |
Obtiene o establece el método de transferencia de datos HTTP ( |
| ServerVariables |
Obtiene una colección de variables de servidor web. |
| TimedOutToken |
Obtiene un CancellationToken objeto que se tripe cuando se agota el tiempo de espera de una solicitud. |
| TlsTokenBindingInfo |
Obtiene la información de enlace de tokens TLS. La propiedad permite a las aplicaciones recuperar información de token de las solicitudes HTTP entrantes para una autenticación mejorada. |
| TotalBytes |
Obtiene el número de bytes en el flujo de entrada actual. |
| Unvalidated |
Obtiene los valores de solicitud HTTP sin desencadenar la validación de solicitudes. |
| Url |
Obtiene información sobre la dirección URL de la solicitud actual. |
| UrlReferrer |
Obtiene información sobre la dirección URL de la solicitud anterior del cliente vinculada a la dirección URL actual. |
| UserAgent |
Obtiene la cadena de agente de usuario sin procesar del explorador cliente que se ha proporcionado. Tenga en cuenta que puede ser null. |
| UserHostAddress |
Obtiene la dirección de host IP del cliente remoto. |
| UserHostName |
Obtiene el nombre DNS del cliente remoto. |
| UserLanguages |
Obtiene una matriz de cadenas ordenadas de preferencias de idioma cliente. |
Métodos
| Nombre | Description |
|---|---|
| Abort() |
Finaliza forzosamente la conexión TCP subyacente, lo que provoca un error en cualquier E/S pendiente. Puede usar este método en respuesta a un ataque por parte de un cliente HTTP malintencionado. |
| BinaryRead(Int32) |
Realiza una lectura binaria de un número especificado de bytes de la secuencia de entrada actual. |
| Equals(Object) |
Determina si el objeto especificado es igual al objeto actual. (Heredado de Object) |
| GetBufferedInputStream() |
Obtiene un Stream objeto que se puede usar para leer el cuerpo de la entidad HTTP entrante. |
| GetBufferlessInputStream() |
Obtiene un Stream objeto que se puede usar para leer el cuerpo de la entidad HTTP entrante. |
| GetBufferlessInputStream(Boolean) |
Obtiene un Stream objeto que se puede usar para leer el cuerpo de la entidad HTTP entrante, deshabilitando opcionalmente el límite de longitud de la solicitud establecido en la MaxRequestLength propiedad . |
| GetHashCode() |
Actúa como función hash predeterminada. (Heredado de Object) |
| GetType() |
Obtiene el Type de la instancia actual. (Heredado de Object) |
| InsertEntityBody() |
Proporciona IIS con una copia del cuerpo de la entidad de solicitud HTTP. |
| InsertEntityBody(Byte[], Int32, Int32) |
Proporciona a IIS una copia del cuerpo de la entidad de solicitud HTTP y con información sobre el objeto de entidad de solicitud. |
| MapImageCoordinates(String) |
Asigna un parámetro de formulario de campo de imagen entrante a los valores de coordenada x e y adecuados. |
| MapPath(String, String, Boolean) |
Asigna la ruta de acceso virtual especificada a una ruta de acceso física. |
| MapPath(String) |
Asigna la ruta de acceso virtual especificada a una ruta de acceso física. |
| MapRawImageCoordinates(String) |
Asigna un parámetro de formulario de campo de imagen entrante a los valores de coordenadas x e y adecuados. |
| MemberwiseClone() |
Crea una copia superficial del Objectactual. (Heredado de Object) |
| SaveAs(String, Boolean) |
Guarda una solicitud HTTP en el disco. |
| ToString() |
Devuelve una cadena que representa el objeto actual. (Heredado de Object) |
| ValidateInput() |
Hace que se produzca la validación de las colecciones a las que se tiene acceso a través de las Cookiespropiedades , Formy QueryString . |