HttpRequest Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Memungkinkan ASP.NET membaca nilai HTTP yang dikirim oleh klien selama permintaan Web.
public ref class HttpRequest sealed
public sealed class HttpRequest
type HttpRequest = class
Public NotInheritable Class HttpRequest
- Warisan
-
HttpRequest
Contoh
Contoh berikut mengakses HttpRequest instans untuk permintaan saat ini dengan menggunakan Request properti Page kelas .
Anda dapat menggunakan sintaks yang disederhanakan untuk mengakses data dari QueryStringkoleksi , , FormCookies, atau ServerVariables . Anda dapat menulis Request["key"]
.
Contoh pertama memperlihatkan cara mengambil nilai string kueri saat memuat halaman.
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
Contoh berikutnya menunjukkan cara memeriksa apakah permintaan diautentikasi dan mengambil URL mentah.
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
Proyek situs Web Visual Studio dengan kode sumber tersedia untuk menyertai topik ini: Unduh.
Contoh ini menggunakan StreamWriter kelas untuk menulis nilai beberapa HttpRequest properti kelas ke file. Untuk properti yang berjenis string, nilainya dikodekan HTML saat ditulis ke file. Properti yang mewakili koleksi diulang, dan setiap pasangan kunci/nilai yang dikandungnya ditulis ke file.
Penting
Contoh ini memiliki kotak teks yang menerima input pengguna, yang merupakan potensi ancaman keamanan. Secara default, ASP.NET halaman Web memvalidasi bahwa input pengguna tidak menyertakan elemen skrip atau HTML. Untuk informasi selengkapnya, lihat Gambaran Umum Eksploitasi Skrip.
<%@ 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>
Keterangan
Metode dan properti HttpRequest kelas diekspos melalui Request
properti HttpApplicationkelas , , HttpContextPage, dan UserControl .
Untuk mengakses data dari QueryStringkoleksi , Form, Cookies, atau ServerVariables , Anda dapat menulis Request["key"]
, seperti yang ditunjukkan dalam contoh untuk QueryString properti .
Catatan
Dukungan Unicode untuk HttpRequest anggota kelas memerlukan IIS versi 6.0 atau yang lebih baru.
Konstruktor
HttpRequest(String, String, String) |
Menginisialisasi HttpRequest objek. |
Properti
AcceptTypes |
Mendapatkan array string jenis penerimaan MIME yang didukung klien. |
AnonymousID |
Mendapatkan pengidentifikasi anonim untuk pengguna, jika ada. |
ApplicationPath |
Mendapatkan jalur akar aplikasi virtual aplikasi ASP.NET di server. |
AppRelativeCurrentExecutionFilePath |
Mendapatkan jalur virtual akar aplikasi dan membuatnya relatif dengan menggunakan notasi tilde (~) untuk akar aplikasi (seperti dalam "~/page.aspx"). |
Browser |
Mendapatkan atau mengatur informasi tentang kemampuan browser klien yang meminta. |
ClientCertificate |
Mendapatkan sertifikat keamanan klien permintaan saat ini. |
ContentEncoding |
Mendapatkan atau mengatur kumpulan karakter isi entitas. |
ContentLength |
Menentukan panjang, dalam byte, konten yang dikirim oleh klien. |
ContentType |
Mendapatkan atau mengatur jenis konten MIME dari permintaan masuk. |
Cookies |
Mendapatkan kumpulan cookie yang dikirim oleh klien. |
CurrentExecutionFilePath |
Mendapatkan jalur virtual permintaan saat ini. |
CurrentExecutionFilePathExtension |
Mendapatkan ekstensi nama file yang ditentukan dalam CurrentExecutionFilePath properti . |
FilePath |
Mendapatkan jalur virtual permintaan saat ini. |
Files |
Mendapatkan kumpulan file yang diunggah oleh klien, dalam format MIME multipihak. |
Filter |
Mendapatkan atau mengatur filter yang akan digunakan saat membaca aliran input saat ini. |
Form |
Mendapatkan kumpulan variabel formulir. |
Headers |
Mendapatkan kumpulan header HTTP. |
HttpChannelBinding |
Mendapatkan objek instans ChannelBinding saat ini HttpWorkerRequest . |
HttpMethod |
Mendapatkan metode transfer data HTTP (seperti |
InputStream |
Mendapatkan konten isi entitas HTTP yang masuk. |
IsAuthenticated |
Mendapatkan nilai yang menunjukkan apakah permintaan telah diautentikasi. |
IsLocal |
Mendapatkan nilai yang menunjukkan apakah permintaan berasal dari komputer lokal. |
IsSecureConnection |
Mendapatkan nilai yang menunjukkan apakah koneksi HTTP menggunakan soket aman (yaitu HTTPS). |
Item[String] |
Mendapatkan objek yang ditentukan dari QueryStringkoleksi , , FormCookies, atau ServerVariables . |
LogonUserIdentity |
WindowsIdentity Mendapatkan tipe untuk pengguna saat ini. |
Params |
Mendapatkan gabungan koleksi QueryStringitem , , FormCookies, dan ServerVariables . |
Path |
Mendapatkan jalur virtual permintaan saat ini. |
PathInfo |
Mendapatkan informasi jalur tambahan untuk sumber daya dengan ekstensi URL. |
PhysicalApplicationPath |
Mendapatkan jalur sistem file fisik dari direktori akar aplikasi server yang sedang dijalankan. |
PhysicalPath |
Mendapatkan jalur sistem file fisik yang sesuai dengan URL yang diminta. |
QueryString |
Mendapatkan kumpulan variabel string kueri HTTP. |
RawUrl |
Mendapatkan URL mentah dari permintaan saat ini. |
ReadEntityBodyMode |
Mendapatkan nilai yang menunjukkan apakah isi entitas permintaan telah dibaca, dan jika demikian, cara membacanya. |
RequestContext |
Mendapatkan instans RequestContext permintaan saat ini. |
RequestType |
Mendapatkan atau mengatur metode transfer data HTTP ( |
ServerVariables |
Mendapatkan kumpulan variabel server Web. |
TimedOutToken |
Mendapatkan objek yang tersandung CancellationToken saat permintaan habis. |
TlsTokenBindingInfo |
Mendapatkan informasi pengikatan token TLS. Properti memungkinkan aplikasi untuk mengambil informasi token dari permintaan HTTP masuk untuk autentikasi yang ditingkatkan. |
TotalBytes |
Mendapatkan jumlah byte dalam aliran input saat ini. |
Unvalidated |
Mendapatkan nilai permintaan HTTP tanpa memicu validasi permintaan. |
Url |
Mendapatkan informasi tentang URL permintaan saat ini. |
UrlReferrer |
Mendapatkan informasi tentang URL permintaan klien sebelumnya yang ditautkan ke URL saat ini. |
UserAgent |
Mendapatkan string agen pengguna mentah dari browser klien yang telah disediakan. Harap dicatat bahwa ini mungkin null. |
UserHostAddress |
Mendapatkan alamat host IP klien jarak jauh. |
UserHostName |
Mendapatkan nama DNS klien jarak jauh. |
UserLanguages |
Mendapatkan array string preferensi bahasa klien yang diurutkan. |
Metode
Abort() |
Secara paksa mengakhiri koneksi TCP yang mendasar, menyebabkan I/O yang luar biasa gagal. Anda dapat menggunakan metode ini sebagai respons terhadap serangan oleh klien HTTP berbahaya. |
BinaryRead(Int32) |
Melakukan pembacaan biner dari jumlah byte tertentu dari aliran input saat ini. |
Equals(Object) |
Menentukan apakah objek yang ditentukan sama dengan objek saat ini. (Diperoleh dari Object) |
GetBufferedInputStream() |
Stream Mendapatkan objek yang dapat digunakan untuk membaca isi entitas HTTP yang masuk. |
GetBufferlessInputStream() |
Stream Mendapatkan objek yang dapat digunakan untuk membaca isi entitas HTTP yang masuk. |
GetBufferlessInputStream(Boolean) |
Stream Mendapatkan objek yang dapat digunakan untuk membaca isi entitas HTTP masuk, secara opsional menonaktifkan batas panjang permintaan yang diatur dalam MaxRequestLength properti . |
GetHashCode() |
Berfungsi sebagai fungsi hash default. (Diperoleh dari Object) |
GetType() |
Mendapatkan instans Type saat ini. (Diperoleh dari Object) |
InsertEntityBody() |
Menyediakan IIS dengan salinan isi entitas permintaan HTTP. |
InsertEntityBody(Byte[], Int32, Int32) |
Menyediakan IIS dengan salinan isi entitas permintaan HTTP dan dengan informasi tentang objek entitas permintaan. |
MapImageCoordinates(String) |
Memetakan parameter formulir bidang gambar masuk ke nilai koordinat x dan koordinat y yang sesuai. |
MapPath(String, String, Boolean) |
Memetakan jalur virtual yang ditentukan ke jalur fisik. |
MapPath(String) |
Memetakan jalur virtual yang ditentukan ke jalur fisik. |
MapRawImageCoordinates(String) |
Memetakan parameter formulir bidang gambar masuk ke dalam nilai koordinat x dan y yang sesuai. |
MemberwiseClone() |
Membuat salinan dangkal dari yang saat ini Object. (Diperoleh dari Object) |
SaveAs(String, Boolean) |
Menyimpan permintaan HTTP ke disk. |
ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |
ValidateInput() |
Menyebabkan validasi terjadi untuk koleksi yang diakses melalui Cookiesproperti , , Formdan QueryString . |