HttpRequest Osztály

Definíció

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 GET, POSTvagy HEAD) .

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 (GET vagy POST) .

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ő.

A következőre érvényes: