Sdílet prostřednictvím


HttpRequest Třída

Definice

Umožňuje ASP.NET číst hodnoty HTTP odeslané klientem během webového požadavku.

public ref class HttpRequest sealed
public sealed class HttpRequest
type HttpRequest = class
Public NotInheritable Class HttpRequest
Dědičnost
HttpRequest

Příklady

Následující příklady přistupují k HttpRequest instanci pro aktuální požadavek pomocí Request vlastnosti Page třídy.

Zjednodušenou syntaxi můžete použít pro přístup k datům z QueryStringkolekce , CookiesForm, nebo ServerVariables . Můžete napsat Request["key"].

První příklad ukazuje, jak načíst hodnotu řetězce dotazu při načítání stránky.

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

Další příklad ukazuje, jak zkontrolovat, jestli je požadavek ověřený a načíst nezpracovanou adresu 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

Tento příklad používá StreamWriter třídu k zápisu hodnot několika HttpRequest vlastností třídy do souboru. U vlastností, které jsou typu řetězec, jsou hodnoty kódovány HTML při zápisu do souboru. Vlastnosti představující kolekci se procházejí smyčkou a každý pár klíč/hodnota, který obsahují, se zapíše do souboru.

Důležité

Tento příklad obsahuje textové pole, které přijímá vstup uživatele, což je potenciální bezpečnostní hrozba. Ve výchozím nastavení ASP.NET webové stránky ověřují, že vstup uživatele neobsahuje skripty ani elementy HTML. Další informace naleznete v tématu Přehled zneužití skriptů.

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

Poznámky

Metody a vlastnosti HttpRequest třídy jsou vystaveny prostřednictvím Request vlastností HttpApplication, HttpContext, Pagea UserControl třídy.

Pokud chcete získat přístup k datům z objektu QueryString, , CookiesFormnebo ServerVariables kolekcí, můžete napsat Request["key"], jak je znázorněno v příkladu QueryString vlastnosti.

Poznámka:

Podpora kódování Unicode pro HttpRequest členy třídy vyžaduje službu IIS verze 6.0 nebo novější.

Konstruktory

Name Description
HttpRequest(String, String, String)

Inicializuje HttpRequest objekt.

Vlastnosti

Name Description
AcceptTypes

Získá pole řetězců typu přijetí MIME podporovaného klientem.

AnonymousID

Získá anonymní identifikátor uživatele, pokud je k dispozici.

ApplicationPath

Získá kořenovou cestu virtuální aplikace ASP.NET na serveru.

AppRelativeCurrentExecutionFilePath

Získá virtuální cestu kořenového adresáře aplikace a vytvoří ji relativní pomocí notace tilda (~) pro kořen aplikace (jako v "~/page.aspx").

Browser

Získá nebo nastaví informace o možnostech prohlížeče žádajícího klienta.

ClientCertificate

Získá certifikát zabezpečení klienta aktuálního požadavku.

ContentEncoding

Získá nebo nastaví znakovou sadu těla entity.

ContentLength

Určuje délku obsahu odeslaného klientem v bajtech.

ContentType

Získá nebo nastaví typ obsahu MIME příchozího požadavku.

Cookies

Získá kolekci souborů cookie odesílaných klientem.

CurrentExecutionFilePath

Získá virtuální cestu aktuálního požadavku.

CurrentExecutionFilePathExtension

Získá příponu názvu souboru, který je zadán v CurrentExecutionFilePath vlastnosti.

FilePath

Získá virtuální cestu aktuálního požadavku.

Files

Získá kolekci souborů nahraných klientem ve formátu MIME s více částmi.

Filter

Získá nebo nastaví filtr, který se má použít při čtení aktuálního vstupního datového proudu.

Form

Získá kolekci proměnných formuláře.

Headers

Získá kolekci hlaviček HTTP.

HttpChannelBinding

ChannelBinding Získá objekt aktuální HttpWorkerRequest instance.

HttpMethod

Získá metodu přenosu dat HTTP (například GET, POSTnebo HEAD) používanou klientem.

InputStream

Získá obsah textu příchozí entity HTTP.

IsAuthenticated

Získá hodnotu označující, zda byl požadavek ověřen.

IsLocal

Získá hodnotu určující, zda požadavek je z místního počítače.

IsSecureConnection

Získá hodnotu určující, zda připojení HTTP používá zabezpečené sokety (to znamená HTTPS).

Item[String]

Získá zadaný objekt z QueryString, , FormCookiesnebo ServerVariables kolekce.

LogonUserIdentity

WindowsIdentity Získá typ pro aktuálního uživatele.

Params

Získá kombinovanou kolekci QueryString, Form, Cookiesa ServerVariables položky.

Path

Získá virtuální cestu aktuálního požadavku.

PathInfo

Získá další informace o cestě pro prostředek s rozšířením adresy URL.

PhysicalApplicationPath

Získá cestu k fyzickému systému souborů aktuálně spuštěného kořenového adresáře serverové aplikace.

PhysicalPath

Získá cestu k fyzickému systému souborů odpovídající požadované adrese URL.

QueryString

Získá kolekci proměnných řetězce dotazu HTTP.

RawUrl

Získá nezpracovanou adresu URL aktuálního požadavku.

ReadEntityBodyMode

Získá hodnotu, která označuje, zda tělo entity požadavku bylo přečteno, a pokud ano, jak bylo přečteno.

RequestContext

RequestContext Získá instanci aktuálního požadavku.

RequestType

Získá nebo nastaví metodu přenosu dat HTTP (GET nebo POST) používaný klientem.

ServerVariables

Získá kolekci proměnných webového serveru.

TimedOutToken

CancellationToken Získá objekt, který je zahozen při vypršení časového limitu požadavku.

TlsTokenBindingInfo

Získá informace o vazbě tokenu TLS. Tato vlastnost umožňuje aplikacím načítat informace o tokenech z příchozích požadavků HTTP pro rozšířené ověřování.

TotalBytes

Získá počet bajtů v aktuálním vstupním datovém proudu.

Unvalidated

Získá hodnoty požadavku HTTP bez aktivace ověření požadavku.

Url

Získá informace o adrese URL aktuálního požadavku.

UrlReferrer

Získá informace o adrese URL předchozího požadavku klienta, který je propojený s aktuální adresou URL.

UserAgent

Získá nezpracovaný řetězec uživatelského agenta klientského prohlížeče, který byl zadán. Upozorňujeme, že může mít hodnotu null.

UserHostAddress

Získá IP adresu hostitele vzdáleného klienta.

UserHostName

Získá název DNS vzdáleného klienta.

UserLanguages

Získá seřazené pole řetězců předvoleb jazyka klienta.

Metody

Name Description
Abort()

Vynuceně ukončí základní připojení TCP, což způsobí selhání nevyřízených vstupně-výstupních operací. Tuto metodu můžete použít v reakci na útok škodlivého klienta HTTP.

BinaryRead(Int32)

Provede binární čtení zadaného počtu bajtů z aktuálního vstupního datového proudu.

Equals(Object)

Určuje, zda je zadaný objekt roven aktuálnímu objektu.

(Zděděno od Object)
GetBufferedInputStream()

Stream Získá objekt, který lze použít ke čtení textu příchozí entity HTTP.

GetBufferlessInputStream()

Stream Získá objekt, který lze použít ke čtení textu příchozí entity HTTP.

GetBufferlessInputStream(Boolean)

Stream Získá objekt, který lze použít ke čtení textu příchozí entity HTTP, volitelně zakázání limitu délky požadavku, který je nastaven ve MaxRequestLength vlastnosti.

GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetType()

Získá Type aktuální instance.

(Zděděno od Object)
InsertEntityBody()

Poskytuje iis kopii těla entity požadavku HTTP.

InsertEntityBody(Byte[], Int32, Int32)

Poskytuje iis kopii těla entity požadavku HTTP a informace o objektu entity požadavku.

MapImageCoordinates(String)

Mapuje parametr formuláře příchozího obrázku na odpovídající hodnoty souřadnic x a souřadnic y.

MapPath(String, String, Boolean)

Mapuje zadanou virtuální cestu na fyzickou cestu.

MapPath(String)

Mapuje zadanou virtuální cestu na fyzickou cestu.

MapRawImageCoordinates(String)

Mapuje parametr formuláře příchozího pole obrázku na odpovídající hodnoty souřadnic x a y.

MemberwiseClone()

Vytvoří mělkou kopii aktuálního Object.

(Zděděno od Object)
SaveAs(String, Boolean)

Uloží požadavek HTTP na disk.

ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)
ValidateInput()

Způsobí, že u kolekcí, ke kterým se přistupuje prostřednictvím objektu Cookies, Forma QueryString vlastností, dojde k ověření.

Platí pro