ASP.NET中的Request、Response、Server對象
Response.Write(Request.ApplicationPath) //應用根路徑
Request.AppRelativeCurrentExecutionFilePath //當前執行請求相對於應用根目錄的虛擬路徑,以~開頭
Request.PhysicalApplicationPath //當前應用的物理路徑,如 D:\TEST\WEB
Request.PhysicalPath //當前請求的物理路徑,如 D:\TEST\WEB\a.aspx
Request.RawUrl //原始請求URL地址
Request.Url //請求的URL,含有域名
Request.UrlReferrer //網頁的來源,可根據這個判斷從百度搜的哪個關鍵詞,防下載盜鏈,防圖片盜鏈,可以偽造(訊雷)
Request.UserHostAddress //訪問者的IP地址
Request.UserLanguages //訪問者瀏覽器支持的語言
Request.Cookies //瀏覽器發過來的COOKIE
Request.MapPath("~/b.aspx") //將虛擬路徑轉換為磁盤物理路徑
Request.QueryString["user"] //獲得URL中user的值
Request.Browser.Type //瀏覽器的名稱和主版本號
Request.Browser.Platform //操作系統版本
響應的緩沖輸出:為了提高服務器的性能,ASP.NET向瀏覽器Write的時候默認並不會第Write一次都會
立即輸出到瀏覽器,而是會緩存數據,到合適的時候或者響應結束才會將緩沖區中的數據一起發送到瀏覽器
Response對象的主要成員:
Response.Buffer,Response.BufferOutput 兩個屬性是一樣的,用來控制是否采用響應緩存,默認true
Response.Flush() 將緩沖區中的數據立即發送給瀏覽器,案例:大量數據導入時,顯示進度,用Thread.Sleep模擬耗時
Response.Clear() 清空緩存區中的數據,這樣在緩存區中的沒有發送到瀏覽器端的數據被清空,不會被發送到瀏覽器
Response.ContentEncoding 輸出流的編碼
Response.ContextType 輸出流的內容類型,如 html(text/html),普通文本(text/plain),JPEG圖片(image/JPEG)等
Response.Cookies 返回給瀏覽器的Cookie的集合,可以通過它設置Cookie
Response.OutputStream 輸出流,在輸出圖片,Excel文件等非文本內容時用到
Response.End() 終止響應,將之前緩存中的數據發給瀏覽器,End()之後的代碼不會被執行
Response.Redirect("url") 重定向瀏覽器到新的網址
Response.SetCookie(HttpCookie cookie) 向輸出流中更新寫到瀏覽器中的Cookie
Response.Write() 向瀏覽器輸出內容
Response.WriteFile() 向瀏覽器輸出文件,如 Response.WriteFile("c:\a.txt");
Server是context的一個屬性,是HttpServerUtility類的一個對象
Server.HtmlDecode(),Server.HtmlEncode(),Server.UrlEncode(),Server.UrlDecode()
UrlEncode是處理超鏈接的,HtmlEncode是處理HTML代碼的
Server.Transfer(path) 內部重定向請求,是服務器內部接管,只有一次http請求,瀏覽器地址欄不會變化
與Redirect不同,另一個是二個請求,URL會變化
因為是內部接管,所以在被重定向到的頁面中是可以訪問到Request,Cookies等
而Redirect不行,因為他是讓瀏覽器去訪問,註意:Transfer是內部接管,因此
不能像Redirect那樣重定向到外部網站
使用Server.Transfer不能直接重定向到ashx,否則會報錯"執行子請球出錯"
有時候不能拿到HttpContext對象,比如在Global.asax中,可以通過 HttpContextCurrent拿到當前的
HttpContext,進而拿到 Response,Request,Server等
ASP.NET中的Request、Response、Server對象