HttpRequest Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Gör att ASP.NET kan läsa HTTP-värden som skickas av en klient under en webbbegäran.
public ref class HttpRequest sealed
public sealed class HttpRequest
type HttpRequest = class
Public NotInheritable Class HttpRequest
- Arv
-
HttpRequest
Exempel
I följande exempel får du åtkomst till instansen HttpRequest för den aktuella begäran med hjälp Request av klassens Page egenskap.
Du kan använda förenklad syntax för att komma åt data från samlingarna QueryString, Form, Cookieseller ServerVariables . Du kan skriva Request["key"].
Det första exemplet visar hur du hämtar ett frågesträngsvärde när du läser in en sida.
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
I nästa exempel visas hur du kontrollerar om begäran autentiseras och hämtar den råa URL:en.
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
I det StreamWriter här exemplet används klassen för att skriva värdena för flera HttpRequest klassegenskaper till en fil. För egenskaper som är av typen sträng är värdena HTML-kodade när de skrivs till filen. Egenskaper som representerar en samling loopas igenom och varje nyckel/värde-par som de innehåller skrivs till filen.
Important
Det här exemplet har en textruta som accepterar användarindata, vilket är ett potentiellt säkerhetshot. Som standard kontrollerar ASP.NET webbsidor att användarindata inte innehåller skript- eller HTML-element. Mer information finns i Översikt över skriptexploateringar.
<%@ 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>
Kommentarer
Metoderna och egenskaperna för HttpRequest klassen exponeras via Request egenskaperna för klasserna HttpApplication, HttpContext, Pageoch UserControl .
Om du vill komma åt data från samlingarna , , eller kan du skriva QueryString, som du ser i exemplet för Form egenskapen.CookiesServerVariablesRequest["key"]QueryString
Note
Unicode-stöd för HttpRequest klassmedlemmar kräver IIS version 6.0 eller senare.
Konstruktorer
| Name | Description |
|---|---|
| HttpRequest(String, String, String) |
Initierar ett HttpRequest objekt. |
Egenskaper
| Name | Description |
|---|---|
| AcceptTypes |
Hämtar en strängmatris med MIME-accepttyper som stöds av klienten. |
| AnonymousID |
Hämtar den anonyma identifieraren för användaren, om den finns. |
| ApplicationPath |
Hämtar ASP.NET programmets virtuella programrotsökväg på servern. |
| AppRelativeCurrentExecutionFilePath |
Hämtar den virtuella sökvägen för programroten och gör den relativ med hjälp av tilde-notationen (~) för programroten (som i "~/page.aspx"). |
| Browser |
Hämtar eller anger information om den begärande klientens webbläsarfunktioner. |
| ClientCertificate |
Hämtar den aktuella begärans klientsäkerhetscertifikat. |
| ContentEncoding |
Hämtar eller anger teckenuppsättningen för entitetstexten. |
| ContentLength |
Anger längden, i byte, på innehåll som skickas av klienten. |
| ContentType |
Hämtar eller anger MIME-innehållstypen för den inkommande begäran. |
| Cookies |
Hämtar en samling cookies som skickas av klienten. |
| CurrentExecutionFilePath |
Hämtar den virtuella sökvägen för den aktuella begäran. |
| CurrentExecutionFilePathExtension |
Hämtar filnamnstillägget som anges i egenskapen CurrentExecutionFilePath . |
| FilePath |
Hämtar den virtuella sökvägen för den aktuella begäran. |
| Files |
Hämtar samlingen av filer som laddas upp av klienten i MIME-format för flera delar. |
| Filter |
Hämtar eller ställer in det filter som ska användas när du läser den aktuella indataströmmen. |
| Form |
Hämtar en samling formulärvariabler. |
| Headers |
Hämtar en samling HTTP-huvuden. |
| HttpChannelBinding |
Hämtar objektet för ChannelBinding den aktuella HttpWorkerRequest instansen. |
| HttpMethod |
Hämtar http-dataöverföringsmetoden (till exempel , |
| InputStream |
Hämtar innehållet i den inkommande HTTP-entitetstexten. |
| IsAuthenticated |
Hämtar ett värde som anger om begäran har autentiserats. |
| IsLocal |
Hämtar ett värde som anger om begäran kommer från den lokala datorn. |
| IsSecureConnection |
Hämtar ett värde som anger om HTTP-anslutningen använder säkra socketar (det vill: HTTPS). |
| Item[String] |
Hämtar det angivna objektet från samlingarna QueryString, Form, Cookieseller ServerVariables . |
| LogonUserIdentity |
Hämtar typen WindowsIdentity för den aktuella användaren. |
| Params |
Hämtar en kombinerad samling med QueryString, Form, Cookiesoch ServerVariables objekt. |
| Path |
Hämtar den virtuella sökvägen för den aktuella begäran. |
| PathInfo |
Hämtar ytterligare sökvägsinformation för en resurs med ett URL-tillägg. |
| PhysicalApplicationPath |
Hämtar sökvägen till det fysiska filsystemet i rotkatalogen för det serverprogram som körs. |
| PhysicalPath |
Hämtar den fysiska filsystemsökväg som motsvarar den begärda URL:en. |
| QueryString |
Hämtar samlingen med HTTP-frågesträngsvariabler. |
| RawUrl |
Hämtar den aktuella begärans rå-URL. |
| ReadEntityBodyMode |
Hämtar ett värde som anger om begärandeentitetstexten har lästs och i så fall hur den lästes. |
| RequestContext |
Hämtar instansen RequestContext av den aktuella begäran. |
| RequestType |
Hämtar eller anger den HTTP-dataöverföringsmetod ( |
| ServerVariables |
Hämtar en samling webbservervariabler. |
| TimedOutToken |
Hämtar ett CancellationToken objekt som utlöss när en begäran överskrider tidsgränsen. |
| TlsTokenBindingInfo |
Hämtar TLS-tokenbindningsinformationen. Egenskapen gör det möjligt för program att hämta tokeninformation från inkommande HTTP-begäranden för förbättrad autentisering. |
| TotalBytes |
Hämtar antalet byte i den aktuella indataströmmen. |
| Unvalidated |
Hämtar HTTP-begärandevärdena utan att utlösa verifiering av begäran. |
| Url |
Hämtar information om URL:en för den aktuella begäran. |
| UrlReferrer |
Hämtar information om URL:en för klientens tidigare begäran som är länkad till den aktuella URL:en. |
| UserAgent |
Hämtar den råa användaragentsträngen i klientwebbläsaren som har angetts. Observera att det kan vara null. |
| UserHostAddress |
Hämtar IP-värdadressen för fjärrklienten. |
| UserHostName |
Hämtar DNS-namnet på fjärrklienten. |
| UserLanguages |
Hämtar en sorterad strängmatris med klientspråkinställningar. |
Metoder
| Name | Description |
|---|---|
| Abort() |
Med två skäl avslutas den underliggande TCP-anslutningen, vilket gör att eventuell utestående I/O misslyckas. Du kan använda den här metoden som svar på en attack av en skadlig HTTP-klient. |
| BinaryRead(Int32) |
Utför en binär läsning av ett angivet antal byte från den aktuella indataströmmen. |
| Equals(Object) |
Avgör om det angivna objektet är lika med det aktuella objektet. (Ärvd från Object) |
| GetBufferedInputStream() |
Hämtar ett Stream objekt som kan användas för att läsa den inkommande HTTP-entitetstexten. |
| GetBufferlessInputStream() |
Hämtar ett Stream objekt som kan användas för att läsa den inkommande HTTP-entitetstexten. |
| GetBufferlessInputStream(Boolean) |
Hämtar ett Stream objekt som kan användas för att läsa den inkommande HTTP-entitetstexten MaxRequestLength , om du vill inaktivera gränsen för begärans längd som anges i egenskapen. |
| GetHashCode() |
Fungerar som standard-hash-funktion. (Ärvd från Object) |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| InsertEntityBody() |
Tillhandahåller IIS med en kopia av HTTP-begärandeentitetens brödtext. |
| InsertEntityBody(Byte[], Int32, Int32) |
Tillhandahåller IIS med en kopia av HTTP-begärandeentitetens brödtext och med information om entitetsobjektet för begäran. |
| MapImageCoordinates(String) |
Mappar en inkommande bildfältsformulärparameter till lämpliga x-koordinat- och y-koordinatvärden. |
| MapPath(String, String, Boolean) |
Mappar den angivna virtuella sökvägen till en fysisk sökväg. |
| MapPath(String) |
Mappar den angivna virtuella sökvägen till en fysisk sökväg. |
| MapRawImageCoordinates(String) |
Mappar en formulärparameter för inkommande bildfält till lämpliga x- och y-koordinatvärden. |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| SaveAs(String, Boolean) |
Sparar en HTTP-begäran på disk. |
| ToString() |
Returnerar en sträng som representerar det aktuella objektet. (Ärvd från Object) |
| ValidateInput() |
Gör att valideringen sker för de samlingar som nås via Cookiesegenskaperna , Formoch QueryString . |