Partilhar via


HttpRequest Classe

Definição

Permite que o ASP.NET leia os valores HTTP enviados por um cliente durante uma solicitação da Web.

public ref class HttpRequest sealed
public sealed class HttpRequest
type HttpRequest = class
Public NotInheritable Class HttpRequest
Herança
HttpRequest

Exemplos

Os exemplos a seguir acessam a HttpRequest instância da solicitação atual usando a Request propriedade da Page classe .

Você pode usar a sintaxe simplificada para acessar dados das QueryStringcoleções , Form, Cookiesou ServerVariables . Você pode escrever Request["key"].

O primeiro exemplo mostra como recuperar um valor de cadeia de caracteres de consulta ao carregar uma 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

O próximo exemplo mostra como verificar se a solicitação está autenticada e recuperar a URL bruta.

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

Um projeto de site do Visual Studio com código-fonte está disponível para acompanhar este tópico: Baixar.

Este exemplo usa a StreamWriter classe para gravar os valores de várias HttpRequest propriedades de classe em um arquivo. Para propriedades do tipo cadeia de caracteres, os valores são codificados em HTML conforme são gravados no arquivo. As propriedades que representam uma coleção são executadas em loop e cada par chave/valor que eles contêm é gravado no arquivo.

Importante

Este exemplo tem uma caixa de texto que aceita a entrada do usuário, que é uma possível ameaça à segurança. Por padrão, ASP.NET páginas da Web validam que a entrada do usuário não inclui elementos html ou script. Para obter mais informações, consulte Visão geral de explorações 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>

Comentários

Os métodos e as propriedades da HttpRequest classe são expostos por meio das Request propriedades das HttpApplicationclasses , HttpContext, Pagee UserControl .

Para acessar dados das QueryStringcoleções , Form, Cookiesou ServerVariables , você pode escrever Request["key"], conforme mostrado no exemplo da QueryString propriedade .

Observação

O suporte unicode para HttpRequest membros de classe requer o IIS versão 6.0 ou posterior.

Construtores

HttpRequest(String, String, String)

Inicializa um objeto HttpRequest.

Propriedades

AcceptTypes

Obtém uma matriz de cadeia de caracteres de tipos de aceitação MIME do cliente com suporte.

AnonymousID

Obtém o identificador anônimo para o usuário, se houver.

ApplicationPath

Obtém o caminho raiz do aplicativo virtual do aplicativo ASP.NET no servidor.

AppRelativeCurrentExecutionFilePath

Obtém o caminho virtual da raiz do aplicativo e o torna relativo usando a notação de til (~) para a raiz do aplicativo (como em “~/page.aspx”).

Browser

Obtém ou define informações sobre as funcionalidades do navegador do cliente solicitante.

ClientCertificate

Obtém a atual certificado de segurança do cliente da solicitação.

ContentEncoding

Obtém ou define o conjunto de caracteres do corpo da entidade.

ContentLength

Especifica o tamanho, em bytes, do conteúdo enviado pelo cliente.

ContentType

Obtém ou define o tipo de conteúdo MIME da solicitação recebida.

Cookies

Obtém uma coleção de cookies enviados pelo cliente.

CurrentExecutionFilePath

Obtém o caminho virtual da solicitação atual.

CurrentExecutionFilePathExtension

Obtém a extensão do nome do arquivo especificado na propriedade CurrentExecutionFilePath.

FilePath

Obtém o caminho virtual da solicitação atual.

Files

Obtém a coleção de arquivos carregados pelo cliente, no formato MIME de diversas partes.

Filter

Obtém ou define o filtro a ser usado ao ler o fluxo de entrada atual.

Form

Obtém uma coleção de variáveis de formulário.

Headers

Obtém uma coleção de cabeçalhos HTTP.

HttpChannelBinding

Obtém o objeto ChannelBinding da instância de HttpWorkerRequest atual.

HttpMethod

Obtém ou define o método de transferência de dados HTTP (tal como GET, POST ou HEAD) usado pelo cliente.

InputStream

Obtém o conteúdo do corpo da entidade HTTP recebida.

IsAuthenticated

Obtém um valor que indica se a solicitação foi autenticada.

IsLocal

Obtém um valor que indica se a solicitação é do computador local.

IsSecureConnection

Obtém um valor que indica se a conexão HTTP usa SSL (ou seja, HTTPS).

Item[String]

Obtém o objeto especificado das coleções QueryString, Form, Cookies ou ServerVariables.

LogonUserIdentity

Obtém o tipo WindowsIdentity para o usuário atual.

Params

Obtém uma coleção combinada dos itens QueryString, Form, Cookies e ServerVariables.

Path

Obtém o caminho virtual da solicitação atual.

PathInfo

Obtém as informações adicionais de caminho para um recurso com uma extensão de URL.

PhysicalApplicationPath

Obtém o caminho do sistema de arquivos físico do diretório raiz do aplicativo para servidores em execução.

PhysicalPath

Obtém o caminho do sistema de arquivos físico correspondente à URL solicitada.

QueryString

Obtém a coleção de variáveis de cadeia de caracteres de consulta HTTP.

RawUrl

Obtém a URL bruta da solicitação atual.

ReadEntityBodyMode

Obtém um valor que indica se o corpo da entidade de solicitação foi lido e, em caso afirmativo, como ele foi lido.

RequestContext

Obtém a instância RequestContext da solicitação atual.

RequestType

Obtém ou define o método de transferência de dados HTTP (GET ou POST) usado pelo cliente.

ServerVariables

Obtém uma coleção de variáveis de servidor Web.

TimedOutToken

Obtém um objeto CancellationToken que é disparado quando uma solicitação expira.

TlsTokenBindingInfo

Obtém as informações de associação de token de TLS. A propriedade permite que os aplicativos recuperem informações do token de solicitações HTTP de entrada para autenticação avançada.

TotalBytes

Obtém o número de bytes no fluxo de entrada atual.

Unvalidated

Obtém os valores de solicitação HTTP sem disparar a validação de solicitação.

Url

Obtém informações sobre a URL da solicitação atual.

UrlReferrer

Obtém informações sobre a URL da solicitação anterior do cliente vinculada à URL atual.

UserAgent

Obtém a cadeia de caracteres de agente do usuário bruto do navegador do cliente que foi fornecido. Observe que pode ser nulo.

UserHostAddress

Obtém o endereço do host IP do cliente remoto.

UserHostName

Obtém o nome DNS do cliente remoto.

UserLanguages

Obtém uma matriz de cadeia de caracteres classificada de preferências de idioma do cliente.

Métodos

Abort()

Termina a conexão TCP subjacente de modo forçado, causando falha em eventuais E/Ss pendentes. Você pode usar esse método em resposta a um ataque por um cliente HTTP mal-intencionado.

BinaryRead(Int32)

Executa uma leitura binária de um número especificado de bytes do fluxo de entrada atual.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetBufferedInputStream()

Obtém um objeto Stream que pode ser usado para ler o corpo da entidade HTTP de entrada.

GetBufferlessInputStream()

Obtém um objeto Stream que pode ser usado para ler o corpo da entidade HTTP de entrada.

GetBufferlessInputStream(Boolean)

Obtém um objeto Stream que pode ser usado para ler o corpo da entidade HTTP recebida, opcionalmente desabilitando o limite de tamanho de solicitação definido na propriedade MaxRequestLength.

GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
InsertEntityBody()

Fornece ao IIS uma cópia do corpo da entidade de solicitação HTTP.

InsertEntityBody(Byte[], Int32, Int32)

Fornece ao IIS uma cópia do corpo da entidade da solicitação HTTP e informações sobre o objeto de entidade da solicitação.

MapImageCoordinates(String)

Mapeia um parâmetro de formulário de campo de imagem de entrada para os valores apropriados das coordenadas X e Y.

MapPath(String)

Mapeia o caminho virtual especificado para um caminho físico.

MapPath(String, String, Boolean)

Mapeia o caminho virtual especificado para um caminho físico.

MapRawImageCoordinates(String)

Mapeia um parâmetro de formulário de campo de imagem de entrada nos valores apropriados das coordenadas X e Y.

MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
SaveAs(String, Boolean)

Salva uma solicitação HTTP no disco.

ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)
ValidateInput()

Faz com que a validação ocorra para as coleções acessadas por meio das propriedades Cookies, Form e QueryString.

Aplica-se a