天天看點

[譯] ASP.NET 生命周期 – ASP.NET 上下文對象(七)

HttpRequest 對象描述的是一個正在被處理的 HTTP 請求。下表列舉了 HttpRequest 中的屬性,它們提供了目前請求的相關資訊(HttpRequest 類定義了一些方法和屬性,我們會逐漸講解當中的一些屬性)。

表 1 – HttpRequest 類中屬性

名稱

描述

AcceptTypes

傳回一個可以被浏覽器接受的 MIME 類型的字元串數組。

Browser

傳回一個可以用來描述浏覽器功能的 HttpBrowserCapabilities 對象。

ContentEncoding

傳回一個 System.Text.Encoding 對象,用來描述對請求資料進行編碼的字元集。

ContentLength

傳回請求内容的位元組數。

ContentType

傳回請求中内容的 MIME 類型。

CurrentExecutionFilePathExtension

傳回請求的 URL 檔案擴充元件。

Headers

傳回一個包含請求頭的集合。

HttpMethod

傳回發起請求的 HTTP 方法(GET, POST, 等等)。

InputStream

傳回一個可以讀取請求内容的流。

IsLocal

如果請求源自本機,那麼傳回 true。

MapPath(path)

将項目中的檔案名轉換成絕對路徑。

RawUrl

RequestContext

傳回一個請求上下文對象用來提供擷取一個請求的路由資訊。

Url

傳回一個 System.Uri 對象用來表示請求 URL。

UrlReferrer

傳回一個 System.Uri 對象用來表示通路來源 URL。

UserAgent

傳回浏覽器提供的 user-agent 字元串。

UserHostAddress

傳回遠端用戶端的 IP 位址,用一個字元串表示。

UserHostName

傳回遠端用戶端的 DNS 名稱。

UserLanguages

傳回一個字元串數組表示浏覽器/使用者偏好的語言。

為了闡述 HttpRequest 類的使用,我已經修改了 Index.cshtml 檔案,用來顯示一些請求屬性。

[譯] ASP.NET 生命周期 – ASP.NET 上下文對象(七)
[譯] ASP.NET 生命周期 – ASP.NET 上下文對象(七)

View Code

HttpRequest 對象使用得很頻繁以緻一些應用元件,包括 Razor 視圖,都提供了友善的屬性,這樣我們就不需要為了擷取一個 HttpRequest 執行個體而動用 HttpContext 對象。下表總結了可以擷取到 HttpRequest 對象的友善屬性:

表 2 - 在不同的 ASP.NET/MVC 元件中擷取一個 HttpRequest 對象

元件

技術

Controller

使用友善的 Request 屬性。

View

全局應用類

子產品

沒有友善的屬性可用。使用 HttpContext.Request 屬性。

處理器

全局

總是可以通過靜态的 HttpContext.Current.Request 屬性擷取到 HttpRequest 對象。

[譯] ASP.NET 生命周期 – ASP.NET 上下文對象(七)

圖 1 - 展示請求的詳細資訊

除了表 1 中提到的屬性,一個請求中還包括了其他的屬性來擷取資料。我在下表列舉了出來,但是因為模型綁定的緣故,它們不直接在 MVC controllers 中使用,這在 Pro ASP.NET MVC 5 中講到過。然而,這些屬性也有時候在子產品中使用到。

表 3 – HttpRequest 類中定義的額外屬性

Files

傳回一個浏覽器表單中發送的檔案集合。

Form

提供對原始表單資料的通路。

Params

一個來自查詢字元串,表單字段,和 cookies 的組合資料項集合。也可以直接在 HttpRequest 對象上使用一個類數組的索引,比如 Request[“myname”] 和 Request.Params[“myname”] 是等同的。

QueryString

傳回一個查詢字元串參數的集合;這個屬性通常不直接在 MVC 應用中使用。

[根據 Adam Freeman – Pro ASP.NET MVC 5 Platform 選譯]

繼續閱讀