HttpRequest Osztály
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Lehetővé teszi, hogy ASP.NET beolvassák az ügyfél által webkérelem során küldött HTTP-értékeket.
public ref class HttpRequest sealed
public sealed class HttpRequest
type HttpRequest = class
Public NotInheritable Class HttpRequest
- Öröklődés
-
HttpRequest
Példák
Az alábbi példák az HttpRequest osztály tulajdonságának használatával Request érik el az aktuális kérés példányát Page .
Egyszerűsített szintaxist használhat a , QueryString, , Formvagy Cookies gyűjtemények ServerVariablesadatainak eléréséhez. Írhat Request["key"].
Az első példa bemutatja, hogyan lehet lekérni egy lekérdezési sztring értékét egy lap betöltésekor.
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
A következő példa bemutatja, hogyan ellenőrizheti, hogy a kérés hitelesítve van-e, és hogyan kérheti le a nyers URL-címet.
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
Ez a példa több StreamWriter osztálytulajdonság HttpRequest értékeinek fájlba írására használja az osztályt. A sztring típusú tulajdonságok esetében az értékek HTML-kódolással vannak kódolva a fájlba írva. A gyűjteményt jelképezendő tulajdonságokat a rendszer hurkolja, és az általuk tartalmazott kulcs-érték párok a fájlba lesznek írva.
Important
Ebben a példában egy szövegdoboz található, amely elfogadja a felhasználói bemenetet, ami potenciális biztonsági fenyegetés. Alapértelmezés szerint ASP.NET weblapok ellenőrzik, hogy a felhasználói bevitel nem tartalmaz-e szkript- vagy HTML-elemeket. További információ: Szkript kihasználása – áttekintés.
<%@ 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>
Megjegyzések
Az osztály metódusai és tulajdonságai a HttpRequestRequest , HttpApplication, HttpContextés Page osztály tulajdonságain UserControlkeresztül jelennek meg.
A , , , vagy gyűjtemények QueryStringadatainak eléréséhez írhatForm, ahogyan az a Cookies tulajdonság példájában látható.ServerVariablesRequest["key"]QueryString
Note
Az osztálytagok Unicode-támogatásához HttpRequest az IIS 6.0-s vagy újabb verziója szükséges.
Konstruktorok
| Name | Description |
|---|---|
| HttpRequest(String, String, String) |
Inicializál egy objektumot HttpRequest . |
Tulajdonságok
| Name | Description |
|---|---|
| AcceptTypes |
Lekéri az ügyfél által támogatott MIME elfogadási típusokat tartalmazó sztringtömböt. |
| AnonymousID |
Ha van ilyen, lekéri a felhasználó névtelen azonosítót. |
| ApplicationPath |
Lekéri a ASP.NET alkalmazás virtuális alkalmazás gyökérútvonalát a kiszolgálón. |
| AppRelativeCurrentExecutionFilePath |
Lekéri az alkalmazásgyökér virtuális elérési útját, és relatívvé teszi az alkalmazásgyökér tilde (~) jelölésével (a "~/page.aspx"). |
| Browser |
Lekéri vagy beállítja a kérést kérő ügyfél böngészőfunkcióira vonatkozó információkat. |
| ClientCertificate |
Lekéri az aktuális kérelem ügyfélbiztonsági tanúsítványát. |
| ContentEncoding |
Lekéri vagy beállítja az entitástörzs karakterkészletét. |
| ContentLength |
Az ügyfél által küldött tartalom bájtban megadott hosszát adja meg. |
| ContentType |
Lekéri vagy beállítja a bejövő kérés MIME-tartalomtípusát. |
| Cookies |
Lekéri az ügyfél által küldött cookie-k gyűjteményét. |
| CurrentExecutionFilePath |
Lekéri az aktuális kérés virtuális elérési útját. |
| CurrentExecutionFilePathExtension |
Lekéri a tulajdonságban megadott fájlnév bővítményét CurrentExecutionFilePath . |
| FilePath |
Lekéri az aktuális kérés virtuális elérési útját. |
| Files |
Lekéri az ügyfél által feltöltött fájlok gyűjteményét többrészes MIME formátumban. |
| Filter |
Lekéri vagy beállítja a szűrőt, amelyet az aktuális bemeneti adatfolyam olvasásakor használ. |
| Form |
Lekéri az űrlapváltozók gyűjteményét. |
| Headers |
LEKéri a HTTP-fejlécek gyűjteményét. |
| HttpChannelBinding |
Lekéri az ChannelBinding aktuális HttpWorkerRequest példány objektumát. |
| HttpMethod |
Lekéri az ügyfél által használt HTTP-adatátviteli módszert (például |
| InputStream |
Lekéri a bejövő HTTP-entitás törzsének tartalmát. |
| IsAuthenticated |
Beolvas egy értéket, amely jelzi, hogy a kérés hitelesítése megtörtént-e. |
| IsLocal |
Beolvas egy értéket, amely jelzi, hogy a kérés a helyi számítógépről származik-e. |
| IsSecureConnection |
Lekérdez egy értéket, amely jelzi, hogy a HTTP-kapcsolat biztonságos szoftvercsatornákat (azaz HTTPS-t) használ-e. |
| Item[String] |
Lekéri a megadott objektumot a QueryString, Form, Cookiesvagy ServerVariables gyűjteményekből. |
| LogonUserIdentity |
Lekéri az WindowsIdentity aktuális felhasználó típusát. |
| Params |
Beolvas egy gyűjteményt QueryString, Form, Cookiesés ServerVariables elemeket. |
| Path |
Lekéri az aktuális kérés virtuális elérési útját. |
| PathInfo |
Lekéri egy URL-kiterjesztéssel rendelkező erőforrás további elérési útvonaladatait. |
| PhysicalApplicationPath |
Lekéri a jelenleg végrehajtó kiszolgálóalkalmazás gyökérkönyvtárának fizikai fájlrendszer-elérési útját. |
| PhysicalPath |
Lekéri a kért URL-címnek megfelelő fizikai fájlrendszer elérési útját. |
| QueryString |
Lekéri a HTTP-lekérdezési sztring változóinak gyűjteményét. |
| RawUrl |
Lekéri az aktuális kérés nyers URL-címét. |
| ReadEntityBodyMode |
Beolvas egy értéket, amely jelzi, hogy a kérelem entitás törzse beolvasva lett-e, és ha igen, hogyan lett beolvasva. |
| RequestContext |
Lekéri az RequestContext aktuális kérés példányát. |
| RequestType |
Lekéri vagy beállítja az ügyfél által használt HTTP-adatátviteli módszert ( |
| ServerVariables |
Lekéri a webkiszolgáló változóinak gyűjteményét. |
| TimedOutToken |
CancellationToken Lekéri a kérések túllépésekor megbotlott objektumot. |
| TlsTokenBindingInfo |
Lekéri a TLS-jogkivonat kötési adatait. A tulajdonság lehetővé teszi az alkalmazások számára, hogy jogkivonat-információkat kérjenek le a bejövő HTTP-kérelmekből továbbfejlesztett hitelesítés céljából. |
| TotalBytes |
Lekéri az aktuális bemeneti adatfolyam bájtjainak számát. |
| Unvalidated |
Lekéri a HTTP-kérések értékeit a kérés érvényesítése nélkül. |
| Url |
Az aktuális kérés URL-címével kapcsolatos információk lekérése. |
| UrlReferrer |
Információt kap az ügyfél előző, az aktuális URL-címhez csatolt kérésének URL-címéről. |
| UserAgent |
Lekéri a megadott ügyfélböngésző nyers felhasználói ügynök sztringét. Vegye figyelembe, hogy null értékű lehet. |
| UserHostAddress |
Lekéri a távoli ügyfél IP-gazdacímét. |
| UserHostName |
Lekéri a távoli ügyfél DNS-nevét. |
| UserLanguages |
Az ügyfélnyelvi beállítások rendezett sztringtömbjének lekérdezése. |
Metódusok
| Name | Description |
|---|---|
| Abort() |
Kényszerítetten megszakítja a mögöttes TCP-kapcsolatot, ami miatt a fennálló I/O meghiúsul. Ezt a módszert egy rosszindulatú HTTP-ügyfél támadására válaszul használhatja. |
| BinaryRead(Int32) |
Az aktuális bemeneti adatfolyamból megadott számú bájt bináris olvasását hajtja végre. |
| Equals(Object) |
Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal. (Öröklődés forrása Object) |
| GetBufferedInputStream() |
Lekéri a Stream bejövő HTTP-entitás törzsének olvasására használható objektumot. |
| GetBufferlessInputStream() |
Lekéri a Stream bejövő HTTP-entitás törzsének olvasására használható objektumot. |
| GetBufferlessInputStream(Boolean) |
Stream Lekéri a bejövő HTTP-entitás törzsének olvasására használható objektumot, amely letiltja a tulajdonságban MaxRequestLength beállított kérelemhossz-korlátot. |
| GetHashCode() |
Ez az alapértelmezett kivonatoló függvény. (Öröklődés forrása Object) |
| GetType() |
Lekéri az Type aktuális példányt. (Öröklődés forrása Object) |
| InsertEntityBody() |
Az IIS-nek a HTTP-kérelem entitás törzsének egy példányát biztosítja. |
| InsertEntityBody(Byte[], Int32, Int32) |
Az IIS-nek a HTTP-kérelem entitás törzsének másolatát és a kérelem entitásobjektumára vonatkozó információkat biztosít. |
| MapImageCoordinates(String) |
A bejövő képmező űrlapparaméterét megfelelteti a megfelelő x-koordináta- és ykoordináta-értékeknek. |
| MapPath(String, String, Boolean) |
A megadott virtuális elérési utat egy fizikai útvonalra képezi le. |
| MapPath(String) |
A megadott virtuális elérési utat egy fizikai útvonalra képezi le. |
| MapRawImageCoordinates(String) |
A bejövő képmező űrlapparaméterét a megfelelő x és y koordinátaértékekké képezi le. |
| MemberwiseClone() |
Az aktuális Objectpéldány sekély másolatát hozza létre. (Öröklődés forrása Object) |
| SaveAs(String, Boolean) |
HTTP-kérést ment a lemezre. |
| ToString() |
Az aktuális objektumot jelképező sztringet ad vissza. (Öröklődés forrása Object) |
| ValidateInput() |
Az ellenőrzés a , Cookiesés Form a tulajdonságok által QueryStringelért gyűjtemények esetében fordul elő. |