HttpRequest Classe

Definição

Permite que o ASP.NET leia os valores HTTP enviados por um cliente durante um pedido Web.

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

Exemplos

Os exemplos seguintes acedem à HttpRequest instância do pedido atual usando a Request propriedade da Page classe.

Pode usar uma sintaxe simplificada para aceder a dados das QueryStringcoleções, Form, Cookies, ou ServerVariables coleções. Podes escrever Request["key"].

O primeiro exemplo mostra como recuperar o valor de uma string 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 exemplo seguinte mostra como verificar se o pedido está autenticado e recuperar o URL bruto.

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

Este exemplo utiliza a StreamWriter classe para escrever os valores de várias HttpRequest propriedades de classe num ficheiro. Para propriedades de tipo string, os valores são codificados em HTML à medida que são escritos no ficheiro. As propriedades que representam uma coleção são encaminhadas em loop, e cada par chave/valor que elas contém é gravado no ficheiro.

Importante

Este exemplo tem uma caixa de texto que aceita a entrada do utilizador, o que constitui uma potencial ameaça à segurança. Por defeito, as páginas Web do ASP.NET validam que a entrada do utilizador não inclui elementos de script ou HTML. Para mais informações, consulte Visão Geral dos Exploits de Scripts.

<%@ 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>

Observações

Os métodos e propriedades da HttpRequest classe são expostos através das Request propriedades das HttpApplicationclasses, HttpContext, Page, e UserControl .

Para aceder a dados das QueryString, Form, Cookies, ou ServerVariables coleções, pode escrever Request["key"], como mostrado no exemplo para a QueryString propriedade.

Note

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

Construtores

Name Description
HttpRequest(String, String, String)

Inicializa um HttpRequest objeto.

Propriedades

Name Description
AcceptTypes

Obtém uma string array de tipos de aceitação MIME suportados pelo cliente.

AnonymousID

Obtém o identificador anónimo do utilizador, se estiver presente.

ApplicationPath

Obtém o caminho raiz virtual da aplicação ASP.NET no servidor.

AppRelativeCurrentExecutionFilePath

Obtém o caminho virtual da raiz da aplicação e torna-o relativo usando a notação tilde (~) para a raiz da aplicação (como em "~/page.aspx").

Browser

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

ClientCertificate

Obtém o certificado de segurança do cliente do pedido atual.

ContentEncoding

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

ContentLength

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

ContentType

Recebe ou define o tipo de conteúdo MIME do pedido recebido.

Cookies

Recebe uma coleção de cookies enviada pelo cliente.

CurrentExecutionFilePath

Obtém o caminho virtual do pedido atual.

CurrentExecutionFilePathExtension

Obtém a extensão do nome do ficheiro especificada na CurrentExecutionFilePath propriedade.

FilePath

Obtém o caminho virtual do pedido atual.

Files

Recebe a coleção de ficheiros carregada pelo cliente, em formato MIME multiparte.

Filter

Recebe ou define o filtro para ser usado ao ler o fluxo de entrada atual.

Form

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

Headers

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

HttpChannelBinding

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

HttpMethod

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

InputStream

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

IsAuthenticated

Recebe um valor que indica se o pedido foi autenticado.

IsLocal

Recebe um valor que indica se o pedido é do computador local.

IsSecureConnection

Recebe um valor que indica se a ligação HTTP usa sockets seguros (ou seja, HTTPS).

Item[String]

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

LogonUserIdentity

Recebe o WindowsIdentity tipo para o utilizador atual.

Params

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

Path

Obtém o caminho virtual do pedido atual.

PathInfo

Obtém a informação adicional do caminho para um recurso com extensão de URL.

PhysicalApplicationPath

Obtém o caminho físico do sistema de ficheiros do diretório raiz da aplicação servidor em execução.

PhysicalPath

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

QueryString

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

RawUrl

Obtém o URL bruto do pedido atual.

ReadEntityBodyMode

Recebe um valor que indica se o corpo da entidade de pedido foi lido e, em caso afirmativo, como foi lido.

RequestContext

Recebe a RequestContext instância do pedido 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 do servidor Web.

TimedOutToken

Recebe um CancellationToken objeto que é ativado quando um pedido expira.

TlsTokenBindingInfo

Obtém a informação de ligação do token TLS. A propriedade permite que as aplicações recuperem informações de tokens de pedidos HTTP recebidos para autenticação aprimorada.

TotalBytes

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

Unvalidated

Obtém os valores do pedido HTTP sem acionar a validação do pedido.

Url

Obtém informações sobre o URL do pedido atual.

UrlReferrer

Obtém informações sobre o URL do pedido anterior do cliente que ligava ao URL atual.

UserAgent

Obtém a string bruta de agente de utilizador do navegador cliente que foi fornecida. Por favor, note que pode ser nulo.

UserHostAddress

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

UserHostName

Obtém o nome DNS do cliente remoto.

UserLanguages

Obtém um array ordenado de cadeias de preferências de língua do cliente.

Métodos

Name Description
Abort()

Termina forçadamente a ligação TCP subjacente, fazendo com que qualquer E/S pendente falhe. Pode usar este método em resposta a um ataque de um cliente HTTP malicioso.

BinaryRead(Int32)

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

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetBufferedInputStream()

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

GetBufferlessInputStream()

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

GetBufferlessInputStream(Boolean)

Obtém um Stream objeto que pode ser usado para ler o corpo da entidade HTTP recebida, desativando opcionalmente o limite de comprimento do pedido definido na MaxRequestLength propriedade.

GetHashCode()

Serve como função de hash predefinida.

(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 pedido HTTP.

InsertEntityBody(Byte[], Int32, Int32)

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

MapImageCoordinates(String)

Mapeia um parâmetro de forma de campo de imagem recebido para valores apropriados das coordenadas x e y.

MapPath(String, String, Boolean)

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

MapPath(String)

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

MapRawImageCoordinates(String)

Mapeia um parâmetro de forma de campo de imagem recebido para valores apropriados de coordenadas x e y.

MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
SaveAs(String, Boolean)

Guarda um pedido HTTP para o disco.

ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)
ValidateInput()

Faz com que ocorra validação para as coleções acedidas através das Cookiespropriedades , Form, e QueryString .

Aplica-se a