HttpRequest Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Umožňuje ASP.NET číst hodnoty HTTP odeslané klientem během webového požadavku.
public ref class HttpRequest sealed
public sealed class HttpRequest
type HttpRequest = class
Public NotInheritable Class HttpRequest
- Dědičnost
-
HttpRequest
Příklady
Následující příklady přistupují k HttpRequest instanci pro aktuální požadavek pomocí Request vlastnosti Page třídy.
Zjednodušenou syntaxi můžete použít pro přístup k datům z QueryStringkolekce , CookiesForm, nebo ServerVariables . Můžete napsat Request["key"].
První příklad ukazuje, jak načíst hodnotu řetězce dotazu při načítání stránky.
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
Další příklad ukazuje, jak zkontrolovat, jestli je požadavek ověřený a načíst nezpracovanou adresu URL.
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
Tento příklad používá StreamWriter třídu k zápisu hodnot několika HttpRequest vlastností třídy do souboru. U vlastností, které jsou typu řetězec, jsou hodnoty kódovány HTML při zápisu do souboru. Vlastnosti představující kolekci se procházejí smyčkou a každý pár klíč/hodnota, který obsahují, se zapíše do souboru.
Důležité
Tento příklad obsahuje textové pole, které přijímá vstup uživatele, což je potenciální bezpečnostní hrozba. Ve výchozím nastavení ASP.NET webové stránky ověřují, že vstup uživatele neobsahuje skripty ani elementy HTML. Další informace naleznete v tématu Přehled zneužití skriptů.
<%@ 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>
Poznámky
Metody a vlastnosti HttpRequest třídy jsou vystaveny prostřednictvím Request vlastností HttpApplication, HttpContext, Pagea UserControl třídy.
Pokud chcete získat přístup k datům z objektu QueryString, , CookiesFormnebo ServerVariables kolekcí, můžete napsat Request["key"], jak je znázorněno v příkladu QueryString vlastnosti.
Poznámka:
Podpora kódování Unicode pro HttpRequest členy třídy vyžaduje službu IIS verze 6.0 nebo novější.
Konstruktory
| Name | Description |
|---|---|
| HttpRequest(String, String, String) |
Inicializuje HttpRequest objekt. |
Vlastnosti
| Name | Description |
|---|---|
| AcceptTypes |
Získá pole řetězců typu přijetí MIME podporovaného klientem. |
| AnonymousID |
Získá anonymní identifikátor uživatele, pokud je k dispozici. |
| ApplicationPath |
Získá kořenovou cestu virtuální aplikace ASP.NET na serveru. |
| AppRelativeCurrentExecutionFilePath |
Získá virtuální cestu kořenového adresáře aplikace a vytvoří ji relativní pomocí notace tilda (~) pro kořen aplikace (jako v "~/page.aspx"). |
| Browser |
Získá nebo nastaví informace o možnostech prohlížeče žádajícího klienta. |
| ClientCertificate |
Získá certifikát zabezpečení klienta aktuálního požadavku. |
| ContentEncoding |
Získá nebo nastaví znakovou sadu těla entity. |
| ContentLength |
Určuje délku obsahu odeslaného klientem v bajtech. |
| ContentType |
Získá nebo nastaví typ obsahu MIME příchozího požadavku. |
| Cookies |
Získá kolekci souborů cookie odesílaných klientem. |
| CurrentExecutionFilePath |
Získá virtuální cestu aktuálního požadavku. |
| CurrentExecutionFilePathExtension |
Získá příponu názvu souboru, který je zadán v CurrentExecutionFilePath vlastnosti. |
| FilePath |
Získá virtuální cestu aktuálního požadavku. |
| Files |
Získá kolekci souborů nahraných klientem ve formátu MIME s více částmi. |
| Filter |
Získá nebo nastaví filtr, který se má použít při čtení aktuálního vstupního datového proudu. |
| Form |
Získá kolekci proměnných formuláře. |
| Headers |
Získá kolekci hlaviček HTTP. |
| HttpChannelBinding |
ChannelBinding Získá objekt aktuální HttpWorkerRequest instance. |
| HttpMethod |
Získá metodu přenosu dat HTTP (například |
| InputStream |
Získá obsah textu příchozí entity HTTP. |
| IsAuthenticated |
Získá hodnotu označující, zda byl požadavek ověřen. |
| IsLocal |
Získá hodnotu určující, zda požadavek je z místního počítače. |
| IsSecureConnection |
Získá hodnotu určující, zda připojení HTTP používá zabezpečené sokety (to znamená HTTPS). |
| Item[String] |
Získá zadaný objekt z QueryString, , FormCookiesnebo ServerVariables kolekce. |
| LogonUserIdentity |
WindowsIdentity Získá typ pro aktuálního uživatele. |
| Params |
Získá kombinovanou kolekci QueryString, Form, Cookiesa ServerVariables položky. |
| Path |
Získá virtuální cestu aktuálního požadavku. |
| PathInfo |
Získá další informace o cestě pro prostředek s rozšířením adresy URL. |
| PhysicalApplicationPath |
Získá cestu k fyzickému systému souborů aktuálně spuštěného kořenového adresáře serverové aplikace. |
| PhysicalPath |
Získá cestu k fyzickému systému souborů odpovídající požadované adrese URL. |
| QueryString |
Získá kolekci proměnných řetězce dotazu HTTP. |
| RawUrl |
Získá nezpracovanou adresu URL aktuálního požadavku. |
| ReadEntityBodyMode |
Získá hodnotu, která označuje, zda tělo entity požadavku bylo přečteno, a pokud ano, jak bylo přečteno. |
| RequestContext |
RequestContext Získá instanci aktuálního požadavku. |
| RequestType |
Získá nebo nastaví metodu přenosu dat HTTP ( |
| ServerVariables |
Získá kolekci proměnných webového serveru. |
| TimedOutToken |
CancellationToken Získá objekt, který je zahozen při vypršení časového limitu požadavku. |
| TlsTokenBindingInfo |
Získá informace o vazbě tokenu TLS. Tato vlastnost umožňuje aplikacím načítat informace o tokenech z příchozích požadavků HTTP pro rozšířené ověřování. |
| TotalBytes |
Získá počet bajtů v aktuálním vstupním datovém proudu. |
| Unvalidated |
Získá hodnoty požadavku HTTP bez aktivace ověření požadavku. |
| Url |
Získá informace o adrese URL aktuálního požadavku. |
| UrlReferrer |
Získá informace o adrese URL předchozího požadavku klienta, který je propojený s aktuální adresou URL. |
| UserAgent |
Získá nezpracovaný řetězec uživatelského agenta klientského prohlížeče, který byl zadán. Upozorňujeme, že může mít hodnotu null. |
| UserHostAddress |
Získá IP adresu hostitele vzdáleného klienta. |
| UserHostName |
Získá název DNS vzdáleného klienta. |
| UserLanguages |
Získá seřazené pole řetězců předvoleb jazyka klienta. |
Metody
| Name | Description |
|---|---|
| Abort() |
Vynuceně ukončí základní připojení TCP, což způsobí selhání nevyřízených vstupně-výstupních operací. Tuto metodu můžete použít v reakci na útok škodlivého klienta HTTP. |
| BinaryRead(Int32) |
Provede binární čtení zadaného počtu bajtů z aktuálního vstupního datového proudu. |
| Equals(Object) |
Určuje, zda je zadaný objekt roven aktuálnímu objektu. (Zděděno od Object) |
| GetBufferedInputStream() |
Stream Získá objekt, který lze použít ke čtení textu příchozí entity HTTP. |
| GetBufferlessInputStream() |
Stream Získá objekt, který lze použít ke čtení textu příchozí entity HTTP. |
| GetBufferlessInputStream(Boolean) |
Stream Získá objekt, který lze použít ke čtení textu příchozí entity HTTP, volitelně zakázání limitu délky požadavku, který je nastaven ve MaxRequestLength vlastnosti. |
| GetHashCode() |
Slouží jako výchozí funkce hash. (Zděděno od Object) |
| GetType() |
Získá Type aktuální instance. (Zděděno od Object) |
| InsertEntityBody() |
Poskytuje iis kopii těla entity požadavku HTTP. |
| InsertEntityBody(Byte[], Int32, Int32) |
Poskytuje iis kopii těla entity požadavku HTTP a informace o objektu entity požadavku. |
| MapImageCoordinates(String) |
Mapuje parametr formuláře příchozího obrázku na odpovídající hodnoty souřadnic x a souřadnic y. |
| MapPath(String, String, Boolean) |
Mapuje zadanou virtuální cestu na fyzickou cestu. |
| MapPath(String) |
Mapuje zadanou virtuální cestu na fyzickou cestu. |
| MapRawImageCoordinates(String) |
Mapuje parametr formuláře příchozího pole obrázku na odpovídající hodnoty souřadnic x a y. |
| MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (Zděděno od Object) |
| SaveAs(String, Boolean) |
Uloží požadavek HTTP na disk. |
| ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |
| ValidateInput() |
Způsobí, že u kolekcí, ke kterým se přistupuje prostřednictvím objektu Cookies, Forma QueryString vlastností, dojde k ověření. |