HttpRequest 類別封裝 HTTP 請求資訊,是 ASP.NET 伺服器端存取客戶端資料的核心入口。以下整理常用屬性與集合,附中文說明與使用情境,供開發快速查閱。
| 分類 | 屬性 / 集合 | 說明 | 常見用途 |
|---|---|---|---|
| 客戶端資訊 | UserHostAddress | 客戶端 IP 位址 | 記錄存取日誌、IP 限制 |
| UserHostName | 客戶端 DNS 主機名稱 | 反向解析主機名 | |
| UserAgent | 瀏覽器 User-Agent 字串 | 裝置偵測、瀏覽器相容處理 | |
| Browser | HttpBrowserCapabilities 物件 | 強型別瀏覽器能力(支援 CSS、JS、行動裝置等) | |
| UserLanguages | 接受語言陣列 | 多語系偵測、自動切換文化特性 | |
| ClientCertificate | 客戶端憑證資訊 | 雙向 SSL 驗證 | |
| URL 與路徑 | Url | 完整 URL 物件(含 QueryString) | 取得絕對路徑、參數解析 |
| RawUrl | 原始 URL(含查詢字串,不含域名) | URL 重寫、記錄原始請求 | |
| FilePath | 當前執行檔案相對路徑 | 判斷當前頁面 | |
| Path | 虛擬路徑 | 路由比對 | |
| ApplicationPath | 應用程式虛擬目錄根路徑 | 產生相對/絕對 URL | |
| 請求方式與內容 | HttpMethod | GET / POST / PUT / DELETE... | RESTful API 動詞判斷 |
| RequestType | 同 HttpMethod(別名) | 同上 | |
| ContentType | MIME 類型 | 檔案上傳驗證、API 內容協商 | |
| TotalBytes | 請求內容總位元組數 | 限制上傳大小 | |
| 資料集合 | QueryString | URL 參數集合 | GET 參數讀取 |
| Form | 表單欄位集合 | POST 資料讀取 | |
| Cookies | Cookie 集合 | 追蹤用戶、Session ID | |
| Files | 上傳檔案集合 | HttpPostedFile 存取檔案流 | |
| Headers | HTTP 標頭集合 | 自訂標頭、授權 Token | |
| Params | QueryString+Form+Cookies+ServerVariables 合併 | 不指定來源快速取值(效能稍差) | |
| 伺服器變數與安全 | ServerVariables | IIS 伺服器變數(如 AUTH_USER、LOGON_USER) | Windows 整合驗證取得帳號 |
| IsSecureConnection | 是否 HTTPS | 強制 HTTPS、產生安全連結 | |
| IsAuthenticated | 已通過驗證 | 權限檢查 | |
| ConnectionId | 連線唯一識別碼 | 長連線追蹤、SignalR 相關 |
public string GetClientIp()
{
string ip = Request.Headers["X-Forwarded-For"]
?? Request.Headers["X-Real-IP"]
?? Request.UserHostAddress;
return ip.Split(',')[0].Trim(); // X-Forwarded-For 可能有多個 IP
}
bool isMobile = Request.Browser.IsMobileDevice;
// 或自訂 UserAgent 判斷
string id = Request.QueryString["id"]; // 自動 URL 解碼
// 輸出時記得 HtmlEncode
enctype="multipart/form-data"。LOGON_USER 需啟用 Windows 驗證)。HttpContext.Request,API 類似但屬性名稱 PascalCase(如 Host、Method、Query)。
// 常用單行
Request.UserHostAddress // IP
Request.Url.AbsoluteUri // 完整 URL
Request.QueryString["id"] // 參數
Request.Form["username"] // 表單欄位
Request.Cookies["auth"]?.Value // Cookie 值
Request.Files["upload"] // 上傳檔案
Request.IsSecureConnection // 是否 HTTPS
建議將此表收藏,開發時遇到「怎麼取 IP?」、「怎麼判斷行動裝置?」即可秒查。