成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

概述ASP.NET狀態類型

開發 后端
本文詳細介紹四種ASP.NET狀態類型,一一介紹application,session,cookie,view狀態。

提供了四種ASP.NET狀態類型:application,session,cookie,view。

Application狀態為應用程序提供了一個全局的狀態。所有客戶都可以使用該狀態。從設計的角度來說,我們通常用Application來存儲一些標準的數據。同時,我們在使用它時要注意避免性能的降低,存儲的數據盡可能提供給客戶只讀的功能。

我們可以使用HttpApplication類的Application屬性來訪問Application狀態,它返回一個 HttpApplicationState類的實例。這個類是一個對象集合,可以存儲任何類型的數據,并以鍵/值對的形式存儲。一旦數據被存儲到狀態后,就不會刪除,除非應用程序重新啟動或者被終止或回收。

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

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

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

  1. private void Page_Load(object sender, System.EventArgs e)  
  2. {  
  3. Application.Lock();  
  4. int expr = Int32.Parse((Application["Experiment"]));  
  5. if (expr>=something)  
  6. {  
  7. //do something  
  8.  }  
  9. Else  
  10. {  
  11. //do something else  
  12.  }  
  13. Application.UnLock();  
  14. //Some other thing goes here  


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

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

  1. Session(“Value”) = expr ; // Storing the data into session object  
  2. SomeFunction()  
  3. {  
  4. int expr = Int32.Parse(Session(“Value”));//Accessing from it  
  5.  if (expr>=something)  
  6. {  
  7. //do something  
  8.  }  
  9. Else  
  10. {  
  11. //do something else  
  12.  }  
  13. //Some other thing goes here  

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

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

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


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

  1. <configuration> 
  2. <system.web> 
  3. <sessionState cookieless="true" /> 
  4. </system.web> 
  5. </configuration> 

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

  1. protected void Page_Load(Object sender, EventArgs E)  
  2. {  
  3. int expr = 0;  
  4. if (Request.Cookies["Expr"] == null)  
  5. {  
  6. // "Expr" cookie not set, set with this response  
  7.   HttpCookie cokExpr = new HttpCookie("Expr");  
  8. cokExpr.Value = exprTextBox.Text;  
  9. Response.Cookies.Add(cokExpr);  
  10. expr = Convert.ToInt32(exprTextBox.Text);  
  11. }  
  12. else  
  13. {  
  14. // use existing cookie value...  
  15.   expr = Convert.ToInt32(Request.Cookies["Expr"].Value);  
  16. }  
  17. // use expr to customize page  

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

【編輯推薦】

  1. ASP.NET調用WCF服務
  2. 淺析ASP.NET驗證控件
  3. ASP.NET中WCF服務與ASMX服務的兼容性
  4. 詳解ASP.NET應用程序
  5. ASP.NET的HttpModule
責任編輯:佚名 來源: IT168
相關推薦

2009-07-22 17:45:35

ASP.NET教程

2009-07-28 17:17:19

ASP.NET概述

2009-07-27 15:52:21

ASP.NET特點ASP.NET概述

2009-07-29 13:04:59

2009-07-22 16:17:39

ASP.NET AJA

2009-07-23 16:55:55

ASP.NET特點

2009-08-05 13:58:26

ASP.NET Mem

2009-07-22 10:09:59

ASP.NET MVC

2009-07-20 10:16:13

配置ASP.NET A

2009-07-30 15:17:16

ASP.NET 2.0

2009-08-05 17:54:04

ASP.NET運行模式

2009-07-22 15:58:52

ASP.NET AJA

2009-08-04 16:46:58

ASP.NET內置Ht

2009-08-04 15:22:33

ASP.NET緩存機制

2009-07-23 10:52:38

2009-07-30 14:55:43

ASP.NET 2.0

2009-07-29 09:29:06

ASP.NET水晶報表

2009-08-05 16:59:38

ASP.NET調用Ex

2009-12-18 16:51:41

ASP.NET概述

2009-07-22 17:32:40

ASP.NET應用程序
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久草免费在线视频 | 久久久久国产精品 | 狠狠骚| 欧美精品区 | 日韩在线电影 | 亚洲成人av在线播放 | 99精品国产一区二区三区 | 亚洲精品一区二区在线观看 | 91免费在线播放 | 日韩精品区 | chinese中国真实乱对白 | 日本xx视频免费观看 | 中文字幕视频在线观看 | 久久人 | 亚洲天天干 | 精品久久久久久久人人人人传媒 | 亚洲永久字幕 | 国产一区999 | 久久久久久久久久久91 | 精品久久久一区 | 日韩久久久久久 | 99精品国产一区二区青青牛奶 | 日韩成人 | 夜夜夜夜草 | 日本三级在线网站 | 中文字幕一区二区三区乱码图片 | 免费三级网站 | 欧美视频二区 | 日韩日韩日韩日韩日韩日韩日韩 | 成人国产精品久久久 | 日韩电影免费观看中文字幕 | 色噜噜亚洲男人的天堂 | 欧美电影一区 | 亚洲一区二区三区免费在线观看 | 激情五月综合 | 精品自拍视频 | 欧美日韩高清一区 | 久久久精| 国产一区影院 | 国产在线一区二区三区 | 成人免费大片黄在线播放 |