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 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. |
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 ( |
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. |