Bagikan melalui


HttpRequest Kelas

Definisi

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 GET, , POSTatau HEAD) yang digunakan oleh klien.

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 (GET atau POST) yang digunakan oleh klien.

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)

Memetakan jalur virtual yang ditentukan ke jalur fisik.

MapPath(String, String, Boolean)

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 .

Berlaku untuk