HttpRequest Klass

Definition

Gör att ASP.NET kan läsa HTTP-värden som skickas av en klient under en webbbegäran.

public ref class HttpRequest sealed
public sealed class HttpRequest
type HttpRequest = class
Public NotInheritable Class HttpRequest
Arv
HttpRequest

Exempel

I följande exempel får du åtkomst till instansen HttpRequest för den aktuella begäran med hjälp Request av klassens Page egenskap.

Du kan använda förenklad syntax för att komma åt data från samlingarna QueryString, Form, Cookieseller ServerVariables . Du kan skriva Request["key"].

Det första exemplet visar hur du hämtar ett frågesträngsvärde när du läser in en sida.

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

I nästa exempel visas hur du kontrollerar om begäran autentiseras och hämtar den råa URL:en.

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

I det StreamWriter här exemplet används klassen för att skriva värdena för flera HttpRequest klassegenskaper till en fil. För egenskaper som är av typen sträng är värdena HTML-kodade när de skrivs till filen. Egenskaper som representerar en samling loopas igenom och varje nyckel/värde-par som de innehåller skrivs till filen.

Important

Det här exemplet har en textruta som accepterar användarindata, vilket är ett potentiellt säkerhetshot. Som standard kontrollerar ASP.NET webbsidor att användarindata inte innehåller skript- eller HTML-element. Mer information finns i Översikt över skriptexploateringar.

<%@ 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>

Kommentarer

Metoderna och egenskaperna för HttpRequest klassen exponeras via Request egenskaperna för klasserna HttpApplication, HttpContext, Pageoch UserControl .

Om du vill komma åt data från samlingarna , , eller kan du skriva QueryString, som du ser i exemplet för Form egenskapen.CookiesServerVariablesRequest["key"]QueryString

Note

Unicode-stöd för HttpRequest klassmedlemmar kräver IIS version 6.0 eller senare.

Konstruktorer

Name Description
HttpRequest(String, String, String)

Initierar ett HttpRequest objekt.

Egenskaper

Name Description
AcceptTypes

Hämtar en strängmatris med MIME-accepttyper som stöds av klienten.

AnonymousID

Hämtar den anonyma identifieraren för användaren, om den finns.

ApplicationPath

Hämtar ASP.NET programmets virtuella programrotsökväg på servern.

AppRelativeCurrentExecutionFilePath

Hämtar den virtuella sökvägen för programroten och gör den relativ med hjälp av tilde-notationen (~) för programroten (som i "~/page.aspx").

Browser

Hämtar eller anger information om den begärande klientens webbläsarfunktioner.

ClientCertificate

Hämtar den aktuella begärans klientsäkerhetscertifikat.

ContentEncoding

Hämtar eller anger teckenuppsättningen för entitetstexten.

ContentLength

Anger längden, i byte, på innehåll som skickas av klienten.

ContentType

Hämtar eller anger MIME-innehållstypen för den inkommande begäran.

Cookies

Hämtar en samling cookies som skickas av klienten.

CurrentExecutionFilePath

Hämtar den virtuella sökvägen för den aktuella begäran.

CurrentExecutionFilePathExtension

Hämtar filnamnstillägget som anges i egenskapen CurrentExecutionFilePath .

FilePath

Hämtar den virtuella sökvägen för den aktuella begäran.

Files

Hämtar samlingen av filer som laddas upp av klienten i MIME-format för flera delar.

Filter

Hämtar eller ställer in det filter som ska användas när du läser den aktuella indataströmmen.

Form

Hämtar en samling formulärvariabler.

Headers

Hämtar en samling HTTP-huvuden.

HttpChannelBinding

Hämtar objektet för ChannelBinding den aktuella HttpWorkerRequest instansen.

HttpMethod

Hämtar http-dataöverföringsmetoden (till exempel , GETeller POST) som HEADanvänds av klienten.

InputStream

Hämtar innehållet i den inkommande HTTP-entitetstexten.

IsAuthenticated

Hämtar ett värde som anger om begäran har autentiserats.

IsLocal

Hämtar ett värde som anger om begäran kommer från den lokala datorn.

IsSecureConnection

Hämtar ett värde som anger om HTTP-anslutningen använder säkra socketar (det vill: HTTPS).

Item[String]

Hämtar det angivna objektet från samlingarna QueryString, Form, Cookieseller ServerVariables .

LogonUserIdentity

Hämtar typen WindowsIdentity för den aktuella användaren.

Params

Hämtar en kombinerad samling med QueryString, Form, Cookiesoch ServerVariables objekt.

Path

Hämtar den virtuella sökvägen för den aktuella begäran.

PathInfo

Hämtar ytterligare sökvägsinformation för en resurs med ett URL-tillägg.

PhysicalApplicationPath

Hämtar sökvägen till det fysiska filsystemet i rotkatalogen för det serverprogram som körs.

PhysicalPath

Hämtar den fysiska filsystemsökväg som motsvarar den begärda URL:en.

QueryString

Hämtar samlingen med HTTP-frågesträngsvariabler.

RawUrl

Hämtar den aktuella begärans rå-URL.

ReadEntityBodyMode

Hämtar ett värde som anger om begärandeentitetstexten har lästs och i så fall hur den lästes.

RequestContext

Hämtar instansen RequestContext av den aktuella begäran.

RequestType

Hämtar eller anger den HTTP-dataöverföringsmetod (GET eller POST) som används av klienten.

ServerVariables

Hämtar en samling webbservervariabler.

TimedOutToken

Hämtar ett CancellationToken objekt som utlöss när en begäran överskrider tidsgränsen.

TlsTokenBindingInfo

Hämtar TLS-tokenbindningsinformationen. Egenskapen gör det möjligt för program att hämta tokeninformation från inkommande HTTP-begäranden för förbättrad autentisering.

TotalBytes

Hämtar antalet byte i den aktuella indataströmmen.

Unvalidated

Hämtar HTTP-begärandevärdena utan att utlösa verifiering av begäran.

Url

Hämtar information om URL:en för den aktuella begäran.

UrlReferrer

Hämtar information om URL:en för klientens tidigare begäran som är länkad till den aktuella URL:en.

UserAgent

Hämtar den råa användaragentsträngen i klientwebbläsaren som har angetts. Observera att det kan vara null.

UserHostAddress

Hämtar IP-värdadressen för fjärrklienten.

UserHostName

Hämtar DNS-namnet på fjärrklienten.

UserLanguages

Hämtar en sorterad strängmatris med klientspråkinställningar.

Metoder

Name Description
Abort()

Med två skäl avslutas den underliggande TCP-anslutningen, vilket gör att eventuell utestående I/O misslyckas. Du kan använda den här metoden som svar på en attack av en skadlig HTTP-klient.

BinaryRead(Int32)

Utför en binär läsning av ett angivet antal byte från den aktuella indataströmmen.

Equals(Object)

Avgör om det angivna objektet är lika med det aktuella objektet.

(Ärvd från Object)
GetBufferedInputStream()

Hämtar ett Stream objekt som kan användas för att läsa den inkommande HTTP-entitetstexten.

GetBufferlessInputStream()

Hämtar ett Stream objekt som kan användas för att läsa den inkommande HTTP-entitetstexten.

GetBufferlessInputStream(Boolean)

Hämtar ett Stream objekt som kan användas för att läsa den inkommande HTTP-entitetstexten MaxRequestLength , om du vill inaktivera gränsen för begärans längd som anges i egenskapen.

GetHashCode()

Fungerar som standard-hash-funktion.

(Ärvd från Object)
GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
InsertEntityBody()

Tillhandahåller IIS med en kopia av HTTP-begärandeentitetens brödtext.

InsertEntityBody(Byte[], Int32, Int32)

Tillhandahåller IIS med en kopia av HTTP-begärandeentitetens brödtext och med information om entitetsobjektet för begäran.

MapImageCoordinates(String)

Mappar en inkommande bildfältsformulärparameter till lämpliga x-koordinat- och y-koordinatvärden.

MapPath(String, String, Boolean)

Mappar den angivna virtuella sökvägen till en fysisk sökväg.

MapPath(String)

Mappar den angivna virtuella sökvägen till en fysisk sökväg.

MapRawImageCoordinates(String)

Mappar en formulärparameter för inkommande bildfält till lämpliga x- och y-koordinatvärden.

MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
SaveAs(String, Boolean)

Sparar en HTTP-begäran på disk.

ToString()

Returnerar en sträng som representerar det aktuella objektet.

(Ärvd från Object)
ValidateInput()

Gör att valideringen sker för de samlingar som nås via Cookiesegenskaperna , Formoch QueryString .

Gäller för