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 .

Pro přístup k datům z QueryStringkolekcí , Form, Cookiesnebo ServerVariables můžete použít zjednodušenou syntaxi. Můžete napsat Request["key"].

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

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

Projekt webu sady Visual Studio se zdrojovým kódem je k dispozici pro toto téma: Stáhnout.

Tento příklad používá StreamWriter třídu k zápisu hodnot několika HttpRequest vlastností třídy do souboru. Pro vlastnosti typu řetězec jsou hodnoty kódovány HTML při zápisu do souboru. Vlastnosti, které představují kolekci, se procházejí ve smyčce 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ěřte, že uživatelský vstup neobsahuje skript nebo elementy HTML. Další informace najdete 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 zpřístupněny prostřednictvím Request vlastností HttpApplicationtříd , HttpContext, Pagea UserControl .

Pokud chcete získat přístup k datům z QueryStringkolekcí , Form, Cookiesnebo ServerVariables , 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

HttpRequest(String, String, String)

Inicializuje HttpRequest objekt.

Vlastnosti

AcceptTypes

Získá pole řetězců klientských podporovaných typů MIME.

AnonymousID

Získá anonymní identifikátor uživatele, pokud existuje.

ApplicationPath

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

AppRelativeCurrentExecutionFilePath

Získá virtuální cestu kořene aplikace a nastaví ji jako relativní pomocí tildy (~) 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í žádosti.

ContentEncoding

Získá nebo nastaví znakovou sadu entity-body.

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 odeslaný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 ve 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 pro použití při čtení aktuálního vstupního streamu.

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 příchozího těla entity HTTP.

IsAuthenticated

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

IsLocal

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

IsSecureConnection

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

Item[String]

Získá zadaný objekt z kolekcí QueryString, Form, Cookiesnebo ServerVariables .

LogonUserIdentity

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

Params

Získá kombinovanou kolekci QueryStringpoložek , Form, Cookiesa ServerVariables .

Path

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

PathInfo

Získá další informace o cestě pro prostředek s příponou adresy URL.

PhysicalApplicationPath

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

PhysicalPath

Získá fyzickou cestu 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 byla přečtena.

RequestContext

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

RequestType

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

ServerVariables

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

TimedOutToken

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

TlsTokenBindingInfo

Získá informace o vazbě tokenu TLS. Vlastnost umožňuje aplikacím načíst informace o tokenu 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

Abort()

Vynuceně ukončí základní připojení TCP, což způsobí selhání všech 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čí, zda se zadaný objekt rovná aktuálnímu objektu.

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

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

GetBufferlessInputStream()

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

GetBufferlessInputStream(Boolean)

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

GetHashCode()

Slouží jako výchozí hashovací funkce.

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

Type Získá z aktuální instance.

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

Poskytuje službě IIS kopii těla entity požadavku HTTP.

InsertEntityBody(Byte[], Int32, Int32)

Poskytuje službě IIS kopii těla entity požadavku HTTP a informace o objektu entity požadavku.

MapImageCoordinates(String)

Namapuje příchozí parametr formuláře pole 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)

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

MemberwiseClone()

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

(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 se provede ověření pro kolekce, ke kterým se přistupuje prostřednictvím Cookiesvlastností , Forma QueryString .

Platí pro