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 .
Pro přístup k datům z QueryStringkolekcí , Form, Cookiesnebo ServerVariables můžete použít zjednodušenou syntaxi. Můžete napsat Request["key"]
.
První příklad ukazuje, jak při načítání stránky načíst hodnotu řetězce dotazu.
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
Projekt webu sady Visual Studio se zdrojovým kódem je k dispozici pro toto téma: Stáhnout.
Tento příklad používá StreamWriter třídu k zápisu hodnot několika HttpRequest vlastností třídy do souboru. Pro vlastnosti typu řetězec jsou hodnoty kódovány HTML při zápisu do souboru. Vlastnosti, které představují kolekci, se procházejí ve smyčce 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ěřte, že uživatelský vstup neobsahuje skript nebo elementy HTML. Další informace najdete 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 zpřístupněny prostřednictvím Request
vlastností HttpApplicationtříd , HttpContext, Pagea UserControl .
Pokud chcete získat přístup k datům z QueryStringkolekcí , Form, Cookiesnebo ServerVariables , 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
HttpRequest(String, String, String) |
Inicializuje HttpRequest objekt. |
Vlastnosti
AcceptTypes |
Získá pole řetězců klientských podporovaných typů MIME. |
AnonymousID |
Získá anonymní identifikátor uživatele, pokud existuje. |
ApplicationPath |
Získá ASP.NET kořenovou cestu virtuální aplikace na serveru. |
AppRelativeCurrentExecutionFilePath |
Získá virtuální cestu kořene aplikace a nastaví ji jako relativní pomocí tildy (~) 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í žádosti. |
ContentEncoding |
Získá nebo nastaví znakovou sadu entity-body. |
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 odeslaný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 ve 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 pro použití při čtení aktuálního vstupního streamu. |
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 příchozího těla entity HTTP. |
IsAuthenticated |
Získá hodnotu označující, zda požadavek byl ověřen. |
IsLocal |
Získá hodnotu určující, zda požadavek pochází z místního počítače. |
IsSecureConnection |
Získá hodnotu označující, zda připojení HTTP používá zabezpečené sokety (to znamená HTTPS). |
Item[String] |
Získá zadaný objekt z kolekcí QueryString, Form, Cookiesnebo ServerVariables . |
LogonUserIdentity |
WindowsIdentity Získá typ pro aktuálního uživatele. |
Params |
Získá kombinovanou kolekci QueryStringpoložek , Form, Cookiesa ServerVariables . |
Path |
Získá virtuální cestu aktuálního požadavku. |
PathInfo |
Získá další informace o cestě pro prostředek s příponou adresy URL. |
PhysicalApplicationPath |
Získá fyzickou cestu systému souborů kořenového adresáře aktuálně spuštěné serverové aplikace. |
PhysicalPath |
Získá fyzickou cestu 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 byla přečtena. |
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 vykopaný při vypršení časového limitu požadavku. |
TlsTokenBindingInfo |
Získá informace o vazbě tokenu TLS. Vlastnost umožňuje aplikacím načíst informace o tokenu 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
Abort() |
Vynuceně ukončí základní připojení TCP, což způsobí selhání všech 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čí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
GetBufferedInputStream() |
Stream Získá objekt, který lze použít ke čtení příchozího těla entity HTTP. |
GetBufferlessInputStream() |
Stream Získá objekt, který lze použít ke čtení příchozího těla entity HTTP. |
GetBufferlessInputStream(Boolean) |
Stream Získá objekt, který lze použít ke čtení příchozího těla entity HTTP, volitelně zakázat limit délky požadavku, který je nastaven ve MaxRequestLength vlastnosti. |
GetHashCode() |
Slouží jako výchozí hashovací funkce. (Zděděno od Object) |
GetType() |
Type Získá z aktuální instance. (Zděděno od Object) |
InsertEntityBody() |
Poskytuje službě IIS kopii těla entity požadavku HTTP. |
InsertEntityBody(Byte[], Int32, Int32) |
Poskytuje službě IIS kopii těla entity požadavku HTTP a informace o objektu entity požadavku. |
MapImageCoordinates(String) |
Namapuje příchozí parametr formuláře pole 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) |
Namapuje příchozí parametr formuláře pole obrázku na odpovídající hodnoty souřadnic x a y. |
MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Objectsouboru . (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 se provede ověření pro kolekce, ke kterým se přistupuje prostřednictvím Cookiesvlastností , Forma QueryString . |