HttpRequest Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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 (z |
| 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 ( |
| 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. |