中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

ASP.NET中有哪些狀態類型

發布時間:2021-08-10 17:55:48 來源:億速云 閱讀:135 作者:Leah 欄目:編程語言

本篇文章給大家分享的是有關ASP.NET中有哪些狀態類型,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

我們可以在Global.asax的Application_Start函數中存儲數據:

void Application_Start(object src, EventArgs e)  {  int exp = 0;  // population of dataset from ADO.NET query not shown  // Cache DataSet reference  Application["Experiment"] = exp;  }  現在你可以在任意頁面下使用它:  private void Page_Load(object src, EventArgs e)  {  int expr = Int32.Parse((Application["Experiment"]));  }

于Application狀態對于所有客戶都是共享的,如果客戶只是讀取該數據,則沒有什么問題,一旦要進行寫操作,就不能保證線程的安全以及出現同步爭用的問題。我們可以使用HttpApplicationStateLock類,它派生于ReadWriteObjectLock類,它提供了讀/寫鎖的兩種屬性。在ASP.NET下,隱式地調用了AcquireWrite()和AcquireRead()方法以保證避免上面的問題。當然,我們也可以顯示地使用Lock()和Unlock():

private void Page_Load(object sender, System.EventArgs e)  {  Application.Lock();  int expr = Int32.Parse((Application["Experiment"]));  if (expr>=something)  {  //do something   }  Else  {  //do something else   }  Application.UnLock();  //Some other thing goes here  }


session,cookie,view狀態都是用來保存客戶端信息的ASP.NET狀態類型。它們之間又有什么區別呢?

Session狀態是在客戶登錄的時候創建的,它保存了客戶特定的信息,并以Session ID來標識。當一個新客戶訪問應用程序時,先生成一個新的Session ID(或是Session Key),并為同一個客戶接下來的請求創建聯系。你可以在Session State中存儲任意類型的數據,作為你的應用,狀態被同一個進程和AppDomain(App域)維護。Session State的特點是為每一個特定的客戶創建狀態以維護客戶的信息,這些狀態信息存儲在服務器端的默認的會話狀態配置中。

Session(“Value”) = expr ; // Storing the data into session object  SomeFunction()  {  int expr = Int32.Parse(Session(“Value”));//Accessing from it   if (expr>=something)  {  //do something   }  Else  {  //do something else   }  //Some other thing goes here  }

既然Session State針對特定的客戶建立,通過它來識別客戶的請求。ASP.NET提供了一種加密機制和編碼算法生成自己的Session Key。這是非常必要的,因為知道了你的Session Key,就有權限訪問指定的頁面了。

在ASP.NET中生成Session Key的方法:

byte[] sessionkey = new byte[15];  //Generates a random number  RNGCryptoServiceProvider rngkey = new RNGCryptoServiceProvider ();  rngkey.GetBytes (sessionkey);  string clientsessionKey = SessionId.Encode (sessionkey);


但是Session和客戶端的Cookie是有關的,當客戶關掉Cookie時,Session就失效了。不過在ASP.NET中可以在web.config中修改設置,使Session的傳遞脫離Cookie。方法是:

<configuration> <system.web> <sessionState cookieless="true" /> </system.web> </configuration>

對于Cookie大家并不陌生,每個Cookie存儲了多個名/值對,我們可以通過HttpCookie類的值集合來訪問它,也可以間接地通過類所提供的索引器訪問。Cookie在ASP.NET下的使用:

protected void Page_Load(Object sender, EventArgs E)  {  int expr = 0;  if (Request.Cookies["Expr"] == null)  {  // "Expr" cookie not set, set with this response    HttpCookie cokExpr = new HttpCookie("Expr");  cokExpr.Value = exprTextBox.Text;  Response.Cookies.Add(cokExpr);  expr = Convert.ToInt32(exprTextBox.Text);  }  else  {  // use existing cookie value...    expr = Convert.ToInt32(Request.Cookies["Expr"].Value);  }  // use expr to customize page  }

由于Cookie存儲的信息是放到客戶端的,用戶在訪問服務器端頁面時,必然在客戶端和服務器端之間頻繁交換信息,影響了程序的性能。而Session由于存儲在服務器內存中,因此不存在這個問題。不過,Session存儲的信息是臨時的,用戶一旦關閉瀏覽器,狀態即失去,而Cookie則相反。

以上就是ASP.NET中有哪些狀態類型,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

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

AI

永善县| 雅江县| 武陟县| 安国市| 永州市| 东莞市| 平山县| 图片| 仁布县| 澄迈县| 岚皋县| 遂川县| 阿勒泰市| 西和县| 昌宁县| 思茅市| 株洲市| 金门县| 昌江| 大丰市| 永年县| 桦甸市| 基隆市| 南宫市| 安达市| 吴江市| 沭阳县| 金坛市| 大城县| 靖州| 巫溪县| 祁东县| 伊金霍洛旗| 板桥市| 改则县| 县级市| 仙桃市| 左权县| 翁源县| 锡林郭勒盟| 习水县|