Freigeben über


HttpRequest Klasse

Definition

Ermöglicht es ASP.NET, die von einem Client bei einer Webanforderung gesendeten HTTP-Werte zu lesen.

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 HttpRequest -Eigenschaft der -Klasse auf die Instanz für die RequestPage aktuelle Anforderung zugegriffen.

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

Das erste Beispiel zeigt, wie beim Laden einer Seite ein Abfragezeichenfolgenwert abgerufen wird.

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 ist, und die rohe URL abrufen.

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

Für dieses Thema steht ein Visual Studio-Websiteprojekt mit Quellcode zur Verfügung: Download.

In diesem Beispiel wird die StreamWriter -Klasse verwendet, um die Werte mehrerer HttpRequest Klasseneigenschaften in eine Datei zu schreiben. Bei Eigenschaften vom Typ Zeichenfolge sind die Werte HTML-codiert, wenn sie in die Datei geschrieben werden. Eigenschaften, die eine Auflistung darstellen, werden durchschleifen, und jedes darin enthaltene Schlüssel-Wert-Paar wird in die Datei geschrieben.

Wichtig

Dieses Beispiel umfasst ein Textfeld, das Benutzereingaben akzeptiert, die ein potenzielles Sicherheitsrisiko darstellen. Standardmäßig stellen ASP.NET-Webseiten sicher, dass Benutzereingaben keine Skript- oder HTML-Elemente enthalten. Weitere Informationen finden Sie unter Übersicht über Skriptangriffe.

<%@ 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, Pageund UserControl verfügbar gemacht.

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

Hinweis

Die Unicode-Unterstützung für HttpRequest Klassenmember erfordert IIS, Version 6.0 oder höher.

Konstruktoren

HttpRequest(String, String, String)

Initialisiert ein HttpRequest-Objekt.

Eigenschaften

AcceptTypes

Ruft ein Zeichenfolgenarray der vom Client unterstützten MIME-Accept-Typen ab.

AnonymousID

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

ApplicationPath

Ruft den virtuellen Pfad des Anwendungsstamms der ASP.NET-Anwendung auf dem Server ab.

AppRelativeCurrentExecutionFilePath

Ruft den virtuellen Pfad des Anwendungsstamms ab und wandelt diesen mithilfe der Tildennotation (~) in einen relativen Pfad um (z. B. „~/Seite.aspx“).

Browser

Ruft Informationen über die Browserfunktionen des Clients ab, der die Anforderung gesendet hat, oder legt diese fest.

ClientCertificate

Ruft das Clientsicherheitszertifikat der aktuellen Anforderung ab.

ContentEncoding

Ruft den Zeichensatz des Einheitstextkörpers ab oder legt diesen fest.

ContentLength

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

ContentType

Ruft den MIME-Inhaltstyp der eingehenden Anforderung ab oder legt diesen fest.

Cookies

Ruft eine Auflistung der vom Client gesendeten Cookies ab.

CurrentExecutionFilePath

Ruft den virtuellen Pfad der aktuellen Anforderung ab.

CurrentExecutionFilePathExtension

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

FilePath

Ruft den virtuellen Pfad der aktuellen Anforderung ab.

Files

Ruft die Auflistung der vom Client hochgeladenen Dateien im MIME-Multipart-Format ab.

Filter

Ruft den Filter ab, der beim Lesen des aktuellen Eingabestreams 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 vom Client verwendete HTTP-Datenübertragungsmethode ab, z. B. GET, POST oder HEAD.

InputStream

Ruft den Inhalt des eingehenden HTTP-Einheitentexts 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 bei der HTTP-Verbindung Secure Sockets, d. h. HTTPS, verwendet wird.

Item[String]

Ruft das angegebene Objekt aus den QueryString-, Form-, Cookies- oder ServerVariables-Auflistungen ab.

LogonUserIdentity

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

Params

Ruft eine kombinierte Auflistung der Elemente QueryString, Form, Cookies und ServerVariables 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 für das Stammverzeichnis der gegenwärtig ausgeführten Serveranwendung ab.

PhysicalPath

Ruft den physischen Dateisystempfad entsprechend der angeforderten URL ab.

QueryString

Ruft die Auflistung von Zeichenfolgenvariablen für HTTP-Abfragen ab.

RawUrl

Ruft die Basis-URL der aktuellen Anforderung ab.

ReadEntityBodyMode

Ruft einen Wert ab, der angibt, ob der Text der Anforderungsentität gelesen wurde, und wenn ja, wie er gelesen wurde.

RequestContext

Ruft die RequestContext-Instanz der aktuellen Anforderung ab.

RequestType

Ruft die vom Client verwendete HTTP-Datenübertragungsmethode ab (GET oder POST) oder legt diese fest.

ServerVariables

Ruft eine Auflistung von Webservervariablen ab.

TimedOutToken

Ruft ein CancellationToken-Objekt ab, das aktiviert wird, wenn eine Anforderung abgelaufen ist.

TlsTokenBindingInfo

Ruft die TLS-Token-Bindungsinformationen ab. Die Eigenschaft ermöglicht Anwendungen das Abrufen von Tokeninformationen aus eingehenden HTTP-Anforderungen zur erweiterten Authentifizierung.

TotalBytes

Ruft die Anzahl der Bytes im aktuellen Eingabestream ab.

Unvalidated

Ruft die HTTP-Anforderungswerte ab, ohne die Anforderungsvalidierung auszulösen.

Url

Ruft Informationen über die URL der aktuellen Anforderung ab.

UrlReferrer

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

UserAgent

Ruft die unformatierte Benutzer-Agent-Zeichenfolge des Clientbrowsers ab, der angegeben wurde. Beachten Sie, dass der Wert auch NULL sein kann.

UserHostAddress

Ruft die IP-Hostadresse des Remoteclients ab.

UserHostName

Ruft den DNS-Namen des Remoteclients ab.

UserLanguages

Ruft ein sortiertes Zeichenfolgenarray mit Clientspracheinstellungen ab.

Methoden

Abort()

Erzwingt das Beenden der zugrunde liegenden TCP-Verbindung, woraufhin alle ausstehenden E/A-Vorgänge fehlschlagen. Sie können diese Methode als Reaktion auf einen Angriff von einem böswilligen HTTP-Client verwenden.

BinaryRead(Int32)

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

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetBufferedInputStream()

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

GetBufferlessInputStream()

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

GetBufferlessInputStream(Boolean)

Ruft ein Stream-Objekt ab, das verwendet werden kann, um den eingehenden HTTP-Einheitstextkörper zu lesen, wobei optional die Anforderungslängenbegrenzung deaktiviert wird, die in der MaxRequestLength-Eigenschaft festgesetzt ist.

GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
InsertEntityBody()

Stellt für IIS eine Kopie des HTTP-Anforderungs-Einheitstextkörpers bereit.

InsertEntityBody(Byte[], Int32, Int32)

Stellt für IIS eine Kopie des HTTP-Anforderungs-Einheitstextkörpers und Informationen zum Anforderungsentitätsobjekt bereit.

MapImageCoordinates(String)

Ordnet einen eingehenden Formularparameter für ein Bildfeld den entsprechenden x- und y-Koordinatenwerten zu.

MapPath(String)

Ordnet einem physischen Pfad den angegebenen virtuellen Pfad zu.

MapPath(String, String, Boolean)

Ordnet einem physischen Pfad den angegebenen virtuellen Pfad zu.

MapRawImageCoordinates(String)

Ordnet einen eingehenden Formularparameter für ein Bildfeld den entsprechenden x- und y-Koordinatenwerten zu.

MemberwiseClone()

Erstellt eine flache Kopie des 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()

Bewirkt Validierung für die Auflistungen, auf die über die Eigenschaften Cookies, Form und QueryString zugegriffen wird.

Gilt für: