首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET 內建物件詳解:Request、Response、Server、Session、Cookie、Application 與運算式語法

     編輯:關於ASP.NET

ASP.NET 無「內建物件」說法,實為 Page 類別屬性

JSP 才有內建物件概念。ASP.NET 中 `Request`、`Response` 等為 `Page` 基類屬性,無需 `new` 即可使用。核心圍繞 HTTP 無狀態協議:Client Request → Server Response。

Request 物件 (HttpRequest) - 封裝客戶端請求

屬性類型說明
QueryStringNameValueCollectionURL 參數集合
FormNameValueCollectionPOST 表單資料
CookiesHttpCookieCollection客戶端送來的 Cookie
ServerVariablesNameValueCollection伺服器環境變數 (HTTP_HEADERS 等)
Url / UrlReferrerUri請求 URL / 來源頁面 URL
UserAgentstring瀏覽器識別字串
UserHostAddressstring客戶端 IP
HttpMethodstringGET/POST 等
InputStreamStream原始請求內容流
ContentEncodingEncoding請求編碼 (可設定)

Response 物件 (HttpResponse) - 封裝伺服器回應

屬性/方法類型說明
Write / WriteFile方法輸出字串/檔案至回應流
BinaryWrite方法輸出位元組陣列 (圖片/檔案下載)
Redirect(url)方法302 重導向 (客戶端跳轉)
RedirectPermanent(url)方法301 永久重導向 (SEO 友善)
ContentTypestringMIME 類型 (如 text/html, application/json)
Charset / ContentEncodingstring/Encoding輸出編碼
StatusCode / StatusDescriptionint/stringHTTP 狀態碼
CookiesHttpCookieCollection要送往客戶端的 Cookie
CacheHttpCachePolicy輸出快取控制 (SetCacheability, SetExpires 等)
AppendHeader / AddHeader方法加入自訂 HTTP 標頭
Clear / End / Flush方法清空緩衝/結束回應/刷新輸出
TransmitFile(path)方法高效傳送檔案 (不載入記憶體)

Server 物件 (HttpServerUtility) - 伺服器工具方法

  • `MapPath("~/path")`:虛擬路徑轉實體路徑。
  • `HtmlEncode/Decode`、`UrlEncode/Decode`:編碼轉換。
  • `CreateObject("ProgID")`:建立 COM 物件 (舊版相容)。
  • `Execute/Transfer(path)`:伺服器端轉向/執行另一頁面 (保留/不保留表單資料)。
  • `GetLastError()`:取得未處理例外。
  • `MachineName`:伺服器電腦名稱。

Session 物件 (HttpSessionState) - 使用者會話狀態

  • 索引器:`Session["Key"] = value` / `value = Session["Key"]`。
  • `SessionID`:唯一識別碼 (Cookie 或 URL 傳遞)。
  • `Timeout`:閒置逾期分鐘數 (預設 20)。
  • `Abandon()`:立即結束 Session。
  • `CookieMode`:`UseCookies`/`UseUri`/`AutoDetect`/`UseDeviceProfile`。
  • 模式:`InProc` (預設, 進程內) / `StateServer` / `SQLServer` / `Custom` (分散式部署必須非 InProc)。

Cookie 物件 (HttpCookie) - 客戶端小資料

// 寫入
var c = new HttpCookie("UserName", "John") { Expires = DateTime.Now.AddDays(7), HttpOnly = true };
Response.Cookies.Add(c);

// 讀取
if (Request.Cookies["UserName"] != null) string name = Request.Cookies["UserName"].Value;

屬性:`Name`、`Value`、`Expires`、`Domain`、`Path`、`Secure`、`HttpOnly`、`SameSite` (Core)。

Application 物件 (HttpApplicationState) - 全域應用程式狀態

  • 所有使用者共享,應用程式生命週期內有效。
  • `Lock()` / `Unlock()`:多執行緒同步寫入。
  • 適合:線上人數計數器、全域設定快取、應用程式啟動初始化資料。

運算式語法 `<% %>`、`<%= %>`、`<%# %>`、`<%$ %>`、`<%-- --%>`

語法名稱用途執行時機
`<% ... %>`渲染區塊執行任意伺服器程式碼 (迴圈、判斷)Render 階段
`<%= expr %>`輸出運算式等同 `Response.Write(expr)`Render 階段
`<%# expr %>`資料繫結運算式`Eval`/`Bind`,僅在 `DataBind()` 時計算DataBind 時
`<%$ Expr:Key %>`運算式建置器連接字串、應用程式設定、資源檔編譯/剖析時
`<%-- 註解 --%>`伺服器端註解不輸出至客戶端剖析時忽略

總結

掌握 `Request`/`Response`/`Server`/`Session`/`Cookie`/`Application` 六大核心物件的關鍵屬性方法,與五種運算式語法的執行時機差異,是 ASP.NET 開發者處理 HTTP 互動、狀態管理、資料輸出的基本功。善用 `Response.TransmitFile` 傳大檔、`Session` 模式選擇支援 Web Farm、`<%# %>` 配合資料繫結、`<%$ %>` 取得設定值,能寫出更專業的程式碼。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved