Freigeben über


HttpRequest Klasse

Definition

Ermöglicht ASP.NET das Lesen der HTTP-Werte, die von einem Client während einer Webanforderung gesendet wurden.

public ref class HttpRequest sealed
public sealed class HttpRequest
type HttpRequest = class
Public NotInheritable Class HttpRequest
Vererbung
HttpRequest

Beispiele

In den folgenden Beispielen wird mithilfe der Eigenschaft der Page Klasse auf die HttpRequest Instanz für die aktuelle Anforderung Request zugegriffen.

Sie können eine vereinfachte Syntax für den Zugriff auf Daten aus den QueryString, , Form, Cookiesoder ServerVariables Sammlungen verwenden. Sie können schreiben Request["key"].

Das erste Beispiel zeigt, wie sie beim Laden einer Seite einen Abfragezeichenfolgenwert abrufen.

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

Das nächste Beispiel zeigt, wie Sie überprüfen, ob die Anforderung authentifiziert und die rohe URL abgerufen wird.

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

In diesem Beispiel wird die StreamWriter Klasse verwendet, um die Werte mehrerer HttpRequest Klasseneigenschaften in eine Datei zu schreiben. Bei Eigenschaften vom Typ "String" sind die Werte HTML-codiert, während sie in die Datei geschrieben werden. Eigenschaften, die eine Auflistung darstellen, werden durchlaufen, und jedes Schlüssel-Wert-Paar, das sie enthalten, wird in die Datei geschrieben.

Von Bedeutung

In diesem Beispiel handelt es sich um ein Textfeld, das Benutzereingaben akzeptiert, bei denen es sich um eine potenzielle Sicherheitsrisiken handelt. Standardmäßig überprüfen ASP.NET Webseiten, dass die Benutzereingabe keine Skript- oder HTML-Elemente enthält. Weitere Informationen finden Sie unter Script Exploits Overview.

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

Hinweise

Die Methoden und Eigenschaften der HttpRequest Klasse werden über die Request Eigenschaften der HttpApplicationKlassen , HttpContext, und PageUserControl Klassen verfügbar gemacht.

Um auf Daten aus den QueryString, Form, , Cookiesoder ServerVariables Sammlungen zuzugreifen, können Sie schreiben Request["key"], wie im Beispiel für die QueryString Eigenschaft gezeigt.

Hinweis

Für die Unicode-Unterstützung für HttpRequest Klassenmitglieder ist IIS Version 6.0 oder höher erforderlich.

Konstruktoren

Name Beschreibung
HttpRequest(String, String, String)

Initialisiert ein HttpRequest Objekt.

Eigenschaften

Name Beschreibung
AcceptTypes

Ruft ein Zeichenfolgenarray von clientgestützten MIME-Akzeptiert-Typen ab.

AnonymousID

Ruft den anonymen Bezeichner für den Benutzer ab, falls vorhanden.

ApplicationPath

Ruft den virtuellen Anwendungsstammpfad der ASP.NET Anwendung auf dem Server ab.

AppRelativeCurrentExecutionFilePath

Ruft den virtuellen Pfad des Anwendungsstamms ab und macht ihn relativ, indem die Tildenotation (~) für den Anwendungsstamm verwendet wird (wie in "~/page.aspx").

Browser

Dient zum Abrufen oder Festlegen von Informationen über die Browserfunktionen des anfordernden Clients.

ClientCertificate

Ruft das Clientsicherheitszertifikat der aktuellen Anforderung ab.

ContentEncoding

Dient zum Abrufen oder Festlegen des Zeichensatzes des Entitätstexts.

ContentLength

Gibt die Länge des vom Client gesendeten Inhalts in Bytes an.

ContentType

Dient zum Abrufen oder Festlegen des MIME-Inhaltstyps der eingehenden Anforderung.

Cookies

Ruft eine Sammlung von Cookies, die vom Client gesendet werden.

CurrentExecutionFilePath

Ruft den virtuellen Pfad der aktuellen Anforderung ab.

CurrentExecutionFilePathExtension

Ruft die Erweiterung des Dateinamens ab, der in der CurrentExecutionFilePath Eigenschaft angegeben ist.

FilePath

Ruft den virtuellen Pfad der aktuellen Anforderung ab.

Files

Ruft die Sammlung der vom Client hochgeladenen Dateien im mehrteiligen MIME-Format ab.

Filter

Ruft den Filter ab, der beim Lesen des aktuellen Eingabedatenstroms verwendet werden soll, oder legt diesen fest.

Form

Ruft eine Auflistung von Formularvariablen ab.

Headers

Ruft eine Auflistung von HTTP-Headern ab.

HttpChannelBinding

Ruft das ChannelBinding Objekt der aktuellen HttpWorkerRequest Instanz ab.

HttpMethod

Ruft die HTTP-Datenübertragungsmethode (zGET. B. , oder HEAD) ab, POSTdie vom Client verwendet wird.

InputStream

Ruft den Inhalt des eingehenden HTTP-Entitätstexts ab.

IsAuthenticated

Ruft einen Wert ab, der angibt, ob die Anforderung authentifiziert wurde.

IsLocal

Ruft einen Wert ab, der angibt, ob die Anforderung vom lokalen Computer stammt.

IsSecureConnection

Ruft einen Wert ab, der angibt, ob die HTTP-Verbindung sichere Sockets verwendet (d. b. HTTPS).

Item[String]

Ruft das angegebene Objekt aus den QueryString, , Form, Cookiesoder ServerVariables Auflistungen ab.

LogonUserIdentity

Ruft den WindowsIdentity Typ für den aktuellen Benutzer ab.

Params

Ruft eine kombinierte Auflistung von QueryString, , Form, Cookiesund ServerVariables Elementen ab.

Path

Ruft den virtuellen Pfad der aktuellen Anforderung ab.

PathInfo

Ruft die zusätzlichen Pfadinformationen für eine Ressource mit einer URL-Erweiterung ab.

PhysicalApplicationPath

Ruft den physischen Dateisystempfad des aktuell ausgeführten Stammverzeichnisses der Serveranwendung ab.

PhysicalPath

Ruft den physischen Dateisystempfad ab, der der angeforderten URL entspricht.

QueryString

Ruft die Auflistung der HTTP-Abfragezeichenfolgenvariablen ab.

RawUrl

Ruft die unformatierte URL der aktuellen Anforderung ab.

ReadEntityBodyMode

Ruft einen Wert ab, der angibt, ob der Anforderungsentitätstext gelesen wurde, und falls ja, wie er gelesen wurde.

RequestContext

Ruft die RequestContext Instanz der aktuellen Anforderung ab.

RequestType

Dient zum Abrufen oder Festlegen der HTTP-Datenübertragungsmethode (GET oder POST) vom Client verwendet.

ServerVariables

Ruft eine Auflistung von Webservervariablen ab.

TimedOutToken

Ruft ein CancellationToken Objekt ab, das übersprungen wird, wenn eine Anforderung ausgeht.

TlsTokenBindingInfo

Ruft die TLS-Tokenbindungsinformationen ab. Die Eigenschaft ermöglicht Anwendungen das Abrufen von Tokeninformationen aus eingehenden HTTP-Anforderungen für die erweiterte Authentifizierung.

TotalBytes

Ruft die Anzahl der Bytes im aktuellen Eingabedatenstrom ab.

Unvalidated

Ruft die HTTP-Anforderungswerte ohne Auslösen der Anforderungsüberprüfung ab.

Url

Ruft Informationen zur URL der aktuellen Anforderung ab.

UrlReferrer

Ruft Informationen über die URL der vorherigen Anforderung des Clients ab, die mit der aktuellen URL verknüpft ist.

UserAgent

Ruft die unformatierte Benutzer-Agent-Zeichenfolge des Clientbrowsers ab, der bereitgestellt wurde. Bitte beachten Sie, dass es null sein kann.

UserHostAddress

Ruft die IP-Hostadresse des Remoteclients ab.

UserHostName

Ruft den DNS-Namen des Remoteclients ab.

UserLanguages

Ruft ein sortiertes Zeichenfolgenarray von Clientspracheneinstellungen ab.

Methoden

Name Beschreibung
Abort()

Beendet die zugrunde liegende TCP-Verbindung, was dazu führt, dass keine ausstehende E/A fehlschlägt. Sie können diese Methode als Reaktion auf einen Angriff durch einen böswilligen HTTP-Client verwenden.

BinaryRead(Int32)

Führt einen binären Lesevorgang einer angegebenen Anzahl von Bytes aus dem aktuellen Eingabedatenstrom aus.

Equals(Object)

Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht.

(Geerbt von Object)
GetBufferedInputStream()

Ruft ein Stream Objekt ab, das zum Lesen des eingehenden HTTP-Entitätstexts verwendet werden kann.

GetBufferlessInputStream()

Ruft ein Stream Objekt ab, das zum Lesen des eingehenden HTTP-Entitätstexts verwendet werden kann.

GetBufferlessInputStream(Boolean)

Ruft ein Stream Objekt ab, das zum Lesen des eingehenden HTTP-Entitätstexts verwendet werden kann, optional das Deaktivieren des in der MaxRequestLength Eigenschaft festgelegten Anforderungslängenlimits.

GetHashCode()

Dient als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
InsertEntityBody()

Stellt IIS eine Kopie des Textkörpers der HTTP-Anforderungsentität bereit.

InsertEntityBody(Byte[], Int32, Int32)

Stellt IIS eine Kopie des HTTP-Anforderungsentitätstexts und Informationen zum Anforderungsentitätsobjekt bereit.

MapImageCoordinates(String)

Ordnet einen eingehenden Bildfeld-Formularparameter den entsprechenden X-Koordinaten- und y-Koordinatenwerten zu.

MapPath(String, String, Boolean)

Ordnet den angegebenen virtuellen Pfad einem physischen Pfad zu.

MapPath(String)

Ordnet den angegebenen virtuellen Pfad einem physischen Pfad zu.

MapRawImageCoordinates(String)

Ordnet einen Formularparameter für eingehende Bildfelder den entsprechenden x- und y-Koordinatenwerten zu.

MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
SaveAs(String, Boolean)

Speichert eine HTTP-Anforderung auf dem Datenträger.

ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)
ValidateInput()

Führt dazu, dass die Überprüfung für die Auflistungen erfolgt, auf die über die CookiesEigenschaften Formund QueryString Eigenschaften zugegriffen wird.

Gilt für: