HttpRequest Clase

Definición

Permite a ASP.NET leer los valores HTTP enviados por un cliente durante una solicitud web.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
Herencia
HttpRequest

Ejemplos

En los siguientes ejemplos se tiene acceso a la HttpRequest instancia de para la solicitud actual mediante la Request propiedad de la Page clase.The following examples access the HttpRequest instance for the current request by using the Request property of the Page class.

Puede usar la sintaxis simplificada para tener acceso a los datos de las QueryString Form colecciones,, Cookies o ServerVariables .You can use simplified syntax for accessing data from the QueryString, Form, Cookies, or ServerVariables collections. Puede escribir Request["key"] .You can write Request["key"].

En el primer ejemplo se muestra cómo recuperar un valor de cadena de consulta al cargar una página.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

En el ejemplo siguiente se muestra cómo comprobar si la solicitud está autenticada y recuperar la dirección URL sin procesar.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

Un proyecto de sitio web de Visual Studio con código fuente está disponible para acompañar este tema: Descargar.A Visual Studio Web site project with source code is available to accompany this topic: Download.

En este ejemplo se utiliza la StreamWriter clase para escribir los valores de varias HttpRequest propiedades de clase en un archivo.This example uses the StreamWriter class to write the values of several HttpRequest class properties to a file. 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.For properties that are of type string, the values are HTML encoded as they are written to the file. Las propiedades que representan una colección se recorren en bucle y cada par clave-valor que contienen se escribe en el archivo.Properties that represent a collection are looped through, and each key/value pair that they contain is written to the file.

Importante

Este ejemplo tiene un cuadro de texto que acepta datos proporcionados por el usuario, lo que puede suponer una amenaza para la seguridad.This example has a text box that accepts user input, which is a potential security threat. De forma predeterminada, ASP.NET Web Pages valida que los datos proporcionados por el usuario no incluyen elementos HTML ni de script.By default, ASP.NET Web pages validate that user input does not include script or HTML elements. Para más información, consulte Información general sobre los ataques mediante scripts.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>

Comentarios

Los métodos y las propiedades de la HttpRequest clase se exponen a través Request de las propiedades de las HttpApplication HttpContext clases,, Page y UserControl .The methods and properties of the HttpRequest class are exposed through the Request properties of the HttpApplication, HttpContext, Page, and UserControl classes.

Para obtener acceso a los datos de las QueryString Form colecciones,, Cookies o ServerVariables , puede escribir Request["key"] , tal como se muestra en el ejemplo de la QueryString propiedad.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.

Nota

La compatibilidad con Unicode para HttpRequest miembros de clase requiere la versión 6,0 o posterior de IIS.Unicode support for HttpRequest class members requires IIS version 6.0 or later.

Constructores

HttpRequest(String, String, String)

Inicializa un objeto HttpRequest.Initializes an HttpRequest object.

Propiedades

AcceptTypes

Obtiene una matriz de cadenas de tipos accept MIME admitidos por el cliente.Gets a string array of client-supported MIME accept types.

AnonymousID

Obtiene el identificador anónimo del usuario, si lo hay.Gets the anonymous identifier for the user, if present.

ApplicationPath

Obtiene la ruta de acceso a la raíz virtual de la aplicación ASP.NET en el servidor.Gets the ASP.NET application's virtual application root path on the server.

AppRelativeCurrentExecutionFilePath

Obtiene la ruta de acceso virtual de la raíz de la aplicación y la convierte en relativa mediante la tilde (~) para la raíz de la aplicación (como en "~/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

Obtiene o establece información acerca de las capacidades del explorador del cliente que realiza la solicitud.Gets or sets information about the requesting client's browser capabilities.

ClientCertificate

Obtiene el certificado de seguridad del cliente para la solicitud actual.Gets the current request's client security certificate.

ContentEncoding

Obtiene o establece el juego de caracteres del cuerpo de la entidad.Gets or sets the character set of the entity-body.

ContentLength

Especifica la longitud del contenido enviado por el cliente, en bytes.Specifies the length, in bytes, of content sent by the client.

ContentType

Obtiene o establece el tipo de contenido MIME de la solicitud entrante.Gets or sets the MIME content type of the incoming request.

Cookies

Obtiene una colección de cookies enviada por el cliente.Gets a collection of cookies sent by the client.

CurrentExecutionFilePath

Obtiene la ruta de acceso virtual de la solicitud actual.Gets the virtual path of the current request.

CurrentExecutionFilePathExtension

Obtiene la extensión del nombre de archivo que se especifica en la propiedad CurrentExecutionFilePath.Gets the extension of the file name that is specified in the CurrentExecutionFilePath property.

FilePath

Obtiene la ruta de acceso virtual de la solicitud actual.Gets the virtual path of the current request.

Files

Obtiene la colección de archivos cargada por el cliente, en formato MIME de varias partes.Gets the collection of files uploaded by the client, in multipart MIME format.

Filter

Obtiene o establece el filtro que se usará al leer el flujo de entrada actual.Gets or sets the filter to use when reading the current input stream.

Form

Obtiene una colección de variables de formulario.Gets a collection of form variables.

Headers

Obtiene una colección de encabezados HTTP.Gets a collection of HTTP headers.

HttpChannelBinding

Obtiene el objeto ChannelBinding de la instancia de HttpWorkerRequest actual.Gets the ChannelBinding object of the current HttpWorkerRequest instance.

HttpMethod

Obtiene el método de transferencia de datos HTTP (como GET, POST o HEAD) que usa el cliente.Gets the HTTP data transfer method (such as GET, POST, or HEAD) used by the client.

InputStream

Obtiene el contenido del cuerpo de la entidad HTTP entrante.Gets the contents of the incoming HTTP entity body.

IsAuthenticated

Obtiene un valor que indica si la solicitud se ha autenticado.Gets a value indicating whether the request has been authenticated.

IsLocal

Obtiene un valor que indica si la solicitud es del equipo local.Gets a value indicating whether the request is from the local computer.

IsSecureConnection

Obtiene un valor que indica si la conexión HTTP utiliza sockets seguros, es decir, HTTPS.Gets a value indicating whether the HTTP connection uses secure sockets (that is, HTTPS).

Item[String]

Obtiene el objeto especificado de las colecciones QueryString, Form, Cookies o ServerVariablesGets the specified object from the QueryString, Form, Cookies, or ServerVariables collections.

LogonUserIdentity

Obtiene el tipo WindowsIdentity del usuario actual.Gets the WindowsIdentity type for the current user.

Params

Obtiene una colección combinada de elementos QueryString, Form, Cookies y ServerVariables.Gets a combined collection of QueryString, Form, Cookies, and ServerVariables items.

Path

Obtiene la ruta de acceso virtual de la solicitud actual.Gets the virtual path of the current request.

PathInfo

Obtiene la información adicional de ruta de acceso de un recurso con una extensión de dirección URL.Gets the additional path information for a resource with a URL extension.

PhysicalApplicationPath

Obtiene la ruta de acceso al sistema de archivos físico del directorio raíz de la aplicación de servidor que se está ejecutando.Gets the physical file system path of the currently executing server application's root directory.

PhysicalPath

Obtiene la ruta de acceso al sistema de archivos físico correspondiente a la dirección URL solicitada.Gets the physical file system path corresponding to the requested URL.

QueryString

Obtiene la colección de variables de tipo cadena de consulta HTTP.Gets the collection of HTTP query string variables.

RawUrl

Obtiene la dirección URL sin procesar de la solicitud actual.Gets the raw URL of the current request.

ReadEntityBodyMode

Obtiene un valor que indica si se ha leído el cuerpo de la entidad de la solicitud y, si es así, cómo se ha leído.Gets a value that indicates whether the request entity body has been read, and if so, how it was read.

RequestContext

Obtiene la instancia de RequestContext de la solicitud actual.Gets the RequestContext instance of the current request.

RequestType

Obtiene o establece el método de transferencia de datos HTTP (GET o POST) que usa el cliente.Gets or sets the HTTP data transfer method (GET or POST) used by the client.

ServerVariables

Obtiene una colección de variables de servidor web.Gets a collection of Web server variables.

TimedOutToken

Obtiene un objeto CancellationToken que se desencadena cuando una solicitud consume el tiempo de espera.Gets a CancellationToken object that is tripped when a request times out.

TlsTokenBindingInfo

Obtiene la información de enlace del token TLS.Gets the TLS token binding information. La propiedad permite que las aplicaciones recuperen información de token de solicitudes HTTP entrantes para la autenticación mejorada.The property enables applications to retrieve token information from incoming HTTP requests for enhanced authentication.

TotalBytes

Obtiene el número de bytes del flujo de entrada actual.Gets the number of bytes in the current input stream.

Unvalidated

Obtiene los valores de solicitud HTTP sin desencadenar la validación de la solicitud.Gets the HTTP request values without triggering request validation.

Url

Obtiene información sobre la dirección URL de la solicitud actual.Gets information about the URL of the current request.

UrlReferrer

Obtiene información sobre la dirección URL de la solicitud anterior del cliente que establecía un vínculo con la dirección URL actual.Gets information about the URL of the client's previous request that linked to the current URL.

UserAgent

Obtiene la cadena de agente de usuario no procesada del explorador del cliente que se ha proporcionado.Gets the raw user agent string of the client browser that has been provided. Tenga en cuenta que su valor puede ser null.Please note it may be null.

UserHostAddress

Obtiene la dirección IP del host del cliente remoto.Gets the IP host address of the remote client.

UserHostName

Obtiene el nombre DNS del cliente remoto.Gets the DNS name of the remote client.

UserLanguages

Obtiene una matriz de cadenas ordenada con las preferencias de idioma del cliente.Gets a sorted string array of client language preferences.

Métodos

Abort()

Termina de manera forzosa la conexión TCP subyacente, lo que provoca el error de cualquier E/S pendiente.Forcibly terminates the underlying TCP connection, causing any outstanding I/O to fail. Podría usar este método en respuesta a un ataque de un cliente HTTP malintencionado.You might use this method in response to an attack by a malicious HTTP client.

BinaryRead(Int32)

Realiza una lectura binaria de un número de bytes especificado en el flujo de entrada actual.Performs a binary read of a specified number of bytes from the current input stream.

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.Determines whether the specified object is equal to the current object.

(Heredado de Object)
GetBufferedInputStream()

Obtiene un objeto Stream que se puede usar para leer el cuerpo de entidad HTTP entrante.Gets a Stream object that can be used to read the incoming HTTP entity body.

GetBufferlessInputStream()

Obtiene un objeto Stream que se puede usar para leer el cuerpo de entidad HTTP entrante.Gets a Stream object that can be used to read the incoming HTTP entity body.

GetBufferlessInputStream(Boolean)

Obtiene un objeto Stream que se puede usar para leer el cuerpo de la entidad HTTP entrante y deshabilita opcionalmente el límite de longitud de la solicitud que se establece en la propiedad 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()

Sirve como la función hash predeterminada.Serves as the default hash function.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.Gets the Type of the current instance.

(Heredado de Object)
InsertEntityBody()

Proporciona a IIS una copia del cuerpo de la entidad de solicitud HTTP.Provides IIS with a copy of the HTTP request entity body.

InsertEntityBody(Byte[], Int32, Int32)

Proporciona a IIS una copia del cuerpo de la entidad de solicitud HTTP e información sobre el objeto entidad de solicitud.Provides IIS with a copy of the HTTP request entity body and with information about the request entity object.

MapImageCoordinates(String)

Asigna un parámetro de formulario entrante de campo de imagen a los valores de coordenada X y coordenada Y adecuados.Maps an incoming image-field form parameter to appropriate x-coordinate and y-coordinate values.

MapPath(String)

Asigna la ruta de acceso virtual especificada a una ruta de acceso física.Maps the specified virtual path to a physical path.

MapPath(String, String, Boolean)

Asigna la ruta de acceso virtual especificada a una ruta de acceso física.Maps the specified virtual path to a physical path.

MapRawImageCoordinates(String)

Asigna un parámetro de formulario entrante de campo de imagen a los valores de coordenadas X e Y adecuados.Maps an incoming image field form parameter into appropriate x and y coordinate values.

MemberwiseClone()

Crea una copia superficial del Object actual.Creates a shallow copy of the current Object.

(Heredado de Object)
SaveAs(String, Boolean)

Guarda una solicitud HTTP en el disco.Saves an HTTP request to disk.

ToString()

Devuelve una cadena que representa el objeto actual.Returns a string that represents the current object.

(Heredado de Object)
ValidateInput()

Hace que se produzca la validación en las colecciones a las que se obtuvo acceso a través de las propiedades Cookies, Form y QueryString.Causes validation to occur for the collections accessed through the Cookies, Form, and QueryString properties.

Se aplica a