91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ASP.NET中HttpContext對象下的屬性怎么用

發布時間:2022-05-30 10:51:52 來源:億速云 閱讀:186 作者:iii 欄目:開發技術

這篇文章主要講解了“ASP.NET中HttpContext對象下的屬性怎么用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“ASP.NET中HttpContext對象下的屬性怎么用”吧!

一、HttpContext概述:

HttpContext封裝關于單個HTTP請求的所有HTTP特定信息。

HttpContext基于HttpApplication的處理管道,由于HttpContext對象貫穿整個處理過程,所以,可以從HttpApplication處理管道的前端將狀態數據傳遞到管道的后端,完成狀態的傳遞任務。

HttpContext類它對Request、Respose、Server等等都進行了封裝,并保證在整個請求周期內都可以隨時隨地的調用;為繼承 IHttpModule 和 IHttpHandler 接口的類提供了對當前 HTTP 請求的 HttpContext 對象的引用。

當我們創建一個一般處理程序Handler.ashx時,我們可以在文件中看到這一句:public void ProcessRequest (HttpContext context);

1、訪問方式

1、在WebForm或類庫(包括MVC)項目中,通過Current靜態屬性,就能夠獲得HttpContext的對象。

HttpContext context = HttpContext.Current;

2、如果是在Asp.net MVC的Controller中,通過this.HttpContext就能獲取到HttpContextBase對象。

HttpContextBase context = this.HttpContext;

3、如果是在MVC視圖中可以這樣得到:

@Html.ViewContext.HttpContext

2、成員對象:

  • Application:為當前 HTTP 請求獲取HttpApplicationState 對象

  • Cache:獲取當前應用程序域的Cache 對象

  • Request:為當前 HTTP 請求獲取HttpRequest 對象

  • Response:獲取當前 HTTP 響應的HttpResponse 對象

  • Server:獲取提供用于處理 Web 請求的方法的HttpServerUtility 對象

  • Session:為當前 HTTP 請求獲取HttpSessionState 對象

  • User:為當前 HTTP 請求獲取或設置安全信息。

二、Application屬性:保存所有用戶共用的信息

Application屬性為當前 HTTP 請求獲取 HttpApplicationState 對象。

Application用來保存所有用戶共用的信息。

在Asp時代,如果要保存的數據在應用程序生存期內不會或者很少發生改變,那么使用Application是理想的選擇。但是在Asp.net開發環境中我們把類似的配置數據放在Web.config中。

HttpApplicationState類可以通過Page.Application訪問。

如果要使用Application 要注意的是所有的寫操作都要在Application_OnStart事件中完成(global.Asax),盡管可以使用Application.Lock()避免了沖突,但是它串行化了對Application的請求,會產生嚴重的性能瓶頸。

不要使用Application保存大數據量信息。

global.asax:

void Application_OnStart()
{
    Application["UserID"] = "test";
    String UserName = Application["UserID"].ToString();

    //修改
    Application.Lock();
    Application["count"] = (Application["UserID"] as int) + 1;
    Application.Unlock();
}

三、Cache屬性:當前應用程序域服務端緩存對象

Cache屬性獲取當前應用程序域的 Cache 對象。Cache為服務端緩存對象。

Cache和Application:用于服務端,整個應用程序、所有用戶擁有。

Cache用于在Http請求期間保存頁面或者數據, Cache的使用可以大大的提高整個應用程序的效率,它允許將頻繁訪問的服務器資源存儲在內存中,當用戶發出相同的請求后,服務器不是再次處理而是將Cache中保存的數據直接返回給用戶,

可以看出Cache節省的是時間—服務器處理時間。

Cache實例是每一個應用程序專有的,其生命周期==該應用程序周期,應用程序重啟將重新創建其實例

HttpContext.Cache 是對底層HttpRuntime.Cache 緩存類的封裝,由于封裝到了 HttpContext ,局限于只能在 HttpContext 下使用,即只能用于 Web 應用。

所以在可以的條件,盡量用底層的HttpRuntime.Cache ,而不是用HttpContext.Cache 。

cache一般用于數據較固定,訪問較頻繁的地方,例如在前端進行分頁的時候,初始化把數據放入緩存中,然后每次分頁都從緩存中取數據,這樣減少了連接數據庫的次數,提高了系統的性能。

1.創建Cache

Cache.Insert(string key,object value,CacheDependency dependencies,DateTime absoluteExpiration,TimeSpan slidingExpiration)

Cache["ID"] = "yiner";
//或者
Cache.Insert("ID", "test");//可以緩存任何對象,比如:DataTable

//緩存依賴
CacheDependency cachedep = new CacheDependency(Server.MapPath("~/App_Data/data.xml"));
Cache.Insert("ID", "test", cachedep);//當data.xml更改時,該緩存自動刪除

//設置過期時間:后兩個參數依次為:過期的絕對時間、過期的相對時間
Cache.Insert("ID", "test", null, DateTime.Now.AddMinutes(10), Cache.NoSlidingExpiration);
Cache.Insert("ID", "test", null, Cache.NoAbsoluteExpiration, new TimeSpan(0, 10, 0));

2.銷毀Cache

Cache.Remove("ID");

3.調用Cache

例如你存的是一個DataTable對象,調用如下:

DataTable finaltable = Cache["ID"] as DataTable;
//或
DataTable finaltable = (DataTable)Cache.Get("ID")

四、Request屬性

Request屬性為當前 HTTP 請求獲取 HttpRequest 對象。

在服務器收到客戶端的請求后,HttpRuntime將會創建一個HttpRequest對象的實例,這個實例就是我們在頁面中常用的Request。

Request屬性可通過HttpContext.Current或Page對象來訪問。

在客戶端的請求內容中,主要包含三部分內容。請求行,請求頭部,請求主體。

1、HttpRequest 對象的屬性

  • Request.Headers:獲取 HTTP 頭集合:(結果略)

  • Request.RequestType:獲取客戶端的請求方式,即Get或Post:GET

  • Request.HttpMethod:獲取客戶端使用的 HTTP 數據傳輸方法(如 GET、POST 或 HEAD):GET

  • Request.AcceptTypes:獲取客戶端支持的 MIME 接受類型的字符串數組:*/*

  • Request.RawUrl:獲取當前請求的原始URL:/WebForm1.aspx?id=a,RawUrl不包含主機信息和端口號

  • Request.Url:獲取有關當前請求的 URL 的信息:http://localhost:10693/WebForm1.aspx?id=a

  • Request.UrlReferrer:獲取有關客戶端上次請求的 URL 的信息,該請求鏈接到當前的 URL:

  • Request.FilePath:獲取當前請求的虛擬路徑:/WebForm1.aspx

  • Request.CurrentExecutionFilePath:獲取當前請求的虛擬路徑:/WebForm1.aspx

  • Request.Path:獲取當前請求的虛擬路徑:/WebForm1.aspx

  • Request.AppRelativeCurrentExecutionFilePath:獲取應用程序根的虛擬路徑,并通過對應用程序根使用波形符 (~) 表示法(例如,以“~/page.aspx”的形式)使該路徑成為相對路徑:~/WebForm1.aspx

  • Request.PhysicalPath:獲取與請求的 URL 相對應的物理文件系統路徑:E:\WebApplication1\WebApplication1\WebForm1.aspx

  • Request.Files:獲取客戶端發送的 文件的集合:HttpFileCollection對象

  • Request.Form:獲取窗體變量集合:HtmlForm控件的Method的默認值post,表單數據以HTTP標頭形式發送到Server

  • Request.QueryString:獲取 HTTP 查詢字符串變量集合:id=a;HtmlForm控件的Method的默認值get,表單數據附在網址后。

  • Request.ServerVariables:獲取 Web 服務器變量的集合:Request.ServerVariables["Local_ADDR"] :Server地址 ;Request.ServerVariables["Remote_ADDR"]:客戶端地址。

  • Request.Cookies :Cookies 項的集合HttpCookieCollection對象。

  • Request.Params:獲取QueryString、Form、ServerVariables和 Cookies 項的組合集合。(結果略)

  • Request.ContentEncoding:獲取或設置實體主體的字符集:System.Text.UTF8Encoding

  • Request.ContentLength:指定客戶端發送的內容長度(以字節計):0

  • Request.ContentType:獲取或設置傳入請求的 MIME 內容類型:

  • Request.Browser:獲取或設置有關正在請求的客戶端的瀏覽器功能的信息:(見下面詳解)

  • Request.UserAgent:獲取客戶端瀏覽器的原始用戶代理信息:(結果略)

  • Request.UserHostAddress:獲取遠程客戶端的IP主機地址:127.0.0.1

  • Request.UserHostName:獲取遠程客戶端的DNS名稱:127.0.0.1

  • Request.UserLanguages:獲取客戶端語言首選項的排序字符串數組:zh-cn

2、Request.Browser對象的屬性

Request對象的Browser屬性來獲取客戶端瀏覽器的一些信息:

  • Request.Browser.Browser:獲取由瀏覽器在 User-Agent 請求標頭中發送的瀏覽器字符串:IE

  • Request.Browser.MajorVersion:獲取瀏覽器的主(整數)版本號:8

  • Request.Browser.MinorVersion:獲取瀏覽器的次(即小數)版本號:0

  • Request.Browser.ActiveXControls:指示瀏覽器是否支持 ActiveX 控件:True

  • Request.Browser.Cookies:示瀏覽器是否支持 Cookie:True

  • Request.Browser.EcmaScriptVersion:獲取瀏覽器支持的 ECMAScript 的版本號:1.2

  • Request.Browser.W3CDomVersion:獲取瀏覽器支持的萬維網聯合會 (W3C) XML 文檔對象模型 (DOM) 的版本:1.0

五、Response屬性:HTTP 響應信息

Response屬性獲取當前 HTTP 響應的 HttpResponse 對象。

封裝來自 ASP.NET 操作的 HTTP 響應信息。

在代碼中,HttpResponse的對象引用由關鍵字Response。 例如,Response.Clear()是指HttpResponse.Clear方法。

Page類具有名為的屬性Response的當前實例。

HttpResponse類的方法和屬性通過HttpApplication、 HttpContext、Page、UserControl類的Response的屬性進行公開。

1、屬性

  • BufferOutput:獲取或設置一個值,該值指示是否緩沖輸出并在處理完整個頁之后發送它。

  • Cache:獲取網頁的緩存策略(例如:過期時間、保密性設置和變化條款)。

  • Cookies:獲取響應 cookie 集合。

  • Filter:獲取或設置一個包裝篩選器對象,該對象用于在傳輸之前修改 HTTP 實體主體。

  • Output:啟用到輸出 HTTP 響應流的文本輸出。

  • OutputStream:啟用到輸出 HTTP 內容主體的二進制輸出。

2、方法

  • AddCacheDependency(CacheDependency[]):將一組緩存依賴項與響應關聯,這樣,如果響應存儲在輸出緩存中并且指定的依賴項發生變化,就可以使該響應失效。

  • RemoveOutputCacheItem(String):從緩存中移除與默認輸出緩存提供程序關聯的所有緩存項。 此方法是靜態的。

  • AddCacheItemDependencies(String[]):使緩存項的有效性依賴于緩存中的另一項。。

  • AddFileDependencies(String[]):將文件名數組添加到當前響應依賴的文件名集合中。

  • SetCookie(HttpCookie):更新 Cookie 集合中的一個現有 Cookie。因為 HttpResponse.SetCookie 方法僅供內部使用, 可以改為調用 HttpResponse.Cookies.Set 方法

  • AppendCookie(HttpCookie):將一個 HTTP Cookie 添加到內部 Cookie 集合。

  • AppendHeader(String, String):將 HTTP 頭添加到輸出流。

  • ClearHeaders():清除緩沖區流中的所有頭。

  • Redirect(String, Boolean):將客戶端重定向到新的 URL。 指定新的 URL 并指定當前頁的執行是否應終止。

  • BinaryWrite(Byte[]):將二進制字符串寫入 HTTP 輸出流。

  • Write(String):將一個字符串寫入 HTTP 響應輸出流。

  • WriteFile(String):將指定文件的內容作為文件塊直接寫入 HTTP 響應輸出流。

  • TransmitFile(String):將指定的文件直接寫入 HTTP 響應輸出流,而不在內存中緩沖該文件。

  • Clear():清除緩沖區流中的所有內容輸出。

  • ClearContent():清除緩沖區流中的所有內容輸出。

  • Flush():向客戶端發送當前所有緩沖的輸出。

  • End():將當前所有緩沖的輸出發送到客戶端,停止該頁的執行,并引發 EndRequest 事件。

  • Close():關閉到客戶端的套接字連接。

六、Server屬性

在Asp.net WebForm中,Server屬性獲取提供用于處理 Web 請求的方法的 HttpServerUtility 對象。而在Asp.net MVC中,Server對象是HttpServerUtilityBase對象。

通過Page.Server屬性訪問,提供用于對Web請求的Help方法。

1、屬性

  • MachineName:獲取服務器的計算機名稱。、

  • ScriptTimeout:獲取和設置請求超時值(以秒計)。

2、方法

  • Execute:在當前請求的上下文中(服務端中)執行指定資源的處理程序,然后將執行返回給調用它的頁。

  • Transfer:終止當前頁的執行,并為當前請求開始執行新頁。

    • HtmlEncode/HtmlDecode:對要在瀏覽器中顯示的HTML字符串進行編碼。/對已被編碼以消除無效 HTML 字符的字符串進行解碼

    • UrlEncode/UrlDecode:編碼/解碼URL字符串,以便通過 URL 從 Web 上進行可靠的 HTTP 傳輸。

    • UrlPathEncode:對 URL 字符串的路徑部分進行 URL 編碼并返回編碼后的字符串。

    • MapPath:返回與 Web 服務器上的指定虛擬路徑相對應的物理文件路徑。 該方法經常使用。將虛擬路徑轉換為服務器物理路徑。

    context.Response.Write(context.Server.MapPath("/"));    //輸出 C:\Users\Administrator\Desktop\WebApplication1\WebApplication1\    //該方法經常用,將虛擬路徑轉換為物理路徑
    context.Response.Write("<div style='background-color:red'>HtmlEncode測試</div>");  //如果不編碼,默認就是會被瀏覽器解析的
    context.Response.Write(context.Server.HtmlEncode("<div style='background-color:red'>HtmlEncode測試</div>"));  //經過編碼之后 原樣輸出

    HttpUtility 類由 HttpServerUtility 類在內部使用,HttpUtility 類包含無法從 Server訪問的編碼和解碼實用工具方法,如:ParseQueryString()方法等。

    Response.Write("|Url:"+HttpUtility.UrlEncode("你好啊"));

    若要對 Web 應用程序之外的值進行編碼或解碼,請使用 WebUtility 類。

    3、Server.Execute、Server.Transfer、Response.Redirect區別

    • Server.Execute方法允許當前的ASPX頁面執行一個同一Web服務器上的指定ASPX頁面,當指定的ASPX頁面執行完畢,控制流程重新返回原頁面發出Server.Execute調用的位置。

    • Server.Transfer的跳轉完全是在服務器端,瀏覽器根本不知道已經跳轉了,因此路徑顯示的仍然是原路徑。

    • Response.Redirect是客戶端發送請求到服務器,服務器執行Response.Redirect之后,返回302,瀏覽器接收到請求后,再次發送一次請求到要跳轉的URL.

    在網絡狀態較好的情況下,Redirect(url)方法效率最高!! 可重定向到同一臺或非同一臺服務器上的aspx或非aspx(html)資源。

    Server.Transfer方法和Server.Execute方法最靈活!! 但只能轉到同一Application目錄下,也有可能導致不期望的結果發生。

    Server.Execute方法占用資源最多.

    七、Session屬性:每一個用戶的專有信息

    Session屬性為當前 HTTP 請求獲取 HttpSessionState 對象。

    Session用來保存每一個用戶的專有信息。 HttpSessionState類通過HttpContext或Page對象的Session屬性訪問。一臺客戶機上多個瀏覽器窗口訪問只有一個Session。

    Session的生存期是用戶持續請求時間加上一段時間(一般是20分鐘左右), Session超時或者被關閉將自動釋放數據信息,由于用戶停止使用應用程序之后它仍在內存中存留一段時間,因此這種方法效率較低。

    Session信息是保存在Web服務器內存中的,保存數據量可大可小。

    1、配置Session

    在Web.config中的 <system.web> </system.web>之間添加

    <sessionState 
                mode="InProc"//InProc:保存到內存,Off;StateServer;SQLServer等
                stateConnectionString="tcpip=127.0.0.1:42424"
                sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
                cookieless="false" //如果cookieless=true表示不用Cookie,用URL查詢字符串傳送會話ID。
                timeout="20" />

    其中timeout是過期時間,如20分鐘后超時。

    2、操作Session:

    //添加:
    Session["userName"] = "aaa";
    //獲取:
    if (Session["userName"] != null)
    {
        string str = Session["userName"].ToString();
    }
    
    //清除某個Session
    Session["UserName"] = null;
    Session.Remove("UserName");
    
    //清除全部Session
    Session.Clear();

    八、User屬性

    User的屬性提供對IPrincipal接口的屬性和方法的編程訪問。

    這個屬性能讓我們訪問各種信息,包括用戶是否已驗證,用戶的類型,用戶名等等,我們還可以對該屬性的功能進性擴展,以實現我們的要求。 
    分配給HttpContext.User的對象必須實現IPrincipal接口,而Iprincipal定義的屬性之一是Identity,它必須實現Iidentity接口。

    if (User.Identity.IsAuthenticated)
    {
        Page.Title = "Home page for " + User.Identity.Name;
    }
    else
    {
        Page.Title = "Home page for guest user.";
    }

    感謝各位的閱讀,以上就是“ASP.NET中HttpContext對象下的屬性怎么用”的內容了,經過本文的學習后,相信大家對ASP.NET中HttpContext對象下的屬性怎么用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    体育| 清远市| 丰宁| 壤塘县| 眉山市| 宁陵县| 尤溪县| 唐海县| 墨江| 江口县| 惠安县| 德钦县| 青州市| 同心县| 章丘市| 思南县| 大理市| 安西县| 西充县| 富民县| 湖北省| 孝昌县| 长汀县| 通化县| 阜宁县| 汤原县| 新绛县| 和平区| 布拖县| 界首市| 阿巴嘎旗| 辽阳市| 牟定县| 田阳县| 乌拉特后旗| 丹凤县| 永新县| 罗城| 崇明县| 探索| 东乌珠穆沁旗|