Compartir por


HttpRequest Clase

Definición

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 GET, POSTo HEAD) usado por el cliente.

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 (GET o POST) utilizado por el cliente.

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 .

Se aplica a