国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

ASP.NET中Cookie狀態的說明與用法

2024-07-10 13:29:27
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了ASP.NET中Cookie狀態的說明與用法,需要的朋友可以參考下

Cookie 最早出現是在Netscape Navigator 2.0 中。后來 ASP 也引入了這個技術,它的作用是與 Session 對象相結合來識別用戶。每當用戶開始連接站點時,系統將自動在內存塊中創建一個用戶有關的會話狀態,同時創建一個用戶的 ID 存放在瀏覽器端,與當前的用戶惟一地聯系起來。這樣,服務器保存了 Session,瀏覽器保存了 Cookie(用戶的 ID)。當下一次用戶發出請求時,請求的用戶將被要求提交用戶的 ID,兩者對照以正確地還原原來的會話狀態。這就是在無狀態協議的 HTTP 條件下保持用戶標志的方法。

可以通過 Response.Cookies.Add() 方法直接向瀏覽器寫入 Cookie,通過 Request.Cookies 方法讀取已經設置好的 Cookie。

寫入Cookie 的方法是,先創建一個HttpCookie 對象,通過這個對象來構造一個 Cookie。例如:

 

 
  1. //創建一個 HttpCookie 對象  
  2. HttpCookie cookie = new HttpCookie("樂豬網");  
  3. //設定此 Cookie 值  
  4. cookie.Value = "編程入門網站";  
  5. //加入此 Cookie  
  6. Response.Cookies.Add(cookie); 

Cookie 有臨時的,也有永遠的。永久的 Cookie 以文件形式存儲在計算機上,關閉 Internet Explorer 時仍然保留在計算機上。再次訪問該站點時,創建該 Cookie 的網站可以讀取。在具體的編程時候,是在寫入此 Cookie 的時候,設定 Cookie 的生命周期,其代碼如下:

 

 
  1. DateTime dtNow = DateTime.Now;  
  2. TimeSpan tsMinute = new TimeSpan(0, 1, 0, 0);  
  3. cookie.Expires = dtNow + tsMinute;  
  4. Response.Cookies.Add(cookie); 

以上代碼是設定新產生的 Cookie 的生命期為一個小時,可以通過修改 TimeSpan 的屬性來設定 Cookie 具體的生命期。如果不設定時間,默認時間為 20 分鐘。

讀取指定的 Cookie 時的語句如下:

 

 
  1. HttpCookie cookie = Request.Cookies["Cookie 的名稱"]; 

如果想將讀出的 Cookie 顯示出來時,可以使用以下語句:

 

 
  1. Response.Write(cookie.Value.ToString()); 

Cookie 是保存在客戶端的字符串,它會影響用戶的行為,但又不受用戶的直接管理,雖然它只是一種標志(字母數字字符串)而不是程序,不可能用它來收集用戶的信息,破壞用戶的隱私。但有的用戶仍然不放心,也可能是不愿意別人占用自己的空間,相當一部分用戶在瀏覽器中禁止使用 Cookie。這就給識別用戶帶來了困難。

ASP.NET 2.0 現在已經完全解決了在不使用 Cookie 的情況下,識別用戶的方法(ASP.NET 1.1 版本只部分地解決了這一問題)。解決的方法很簡單,只需要在應用程序的根目錄下的 Web.config 文件中,對 節點進行配置,其他任何程序都不需要修改。為什么一定要在應用程序的根目錄下配置?因為會話狀態的設置是應用程序范圍的設置。站點中的網頁要么全都使用該配置,要么全都不使用。配置的語句是:

 

 
  1. <sessionState cookieless="useUri" /> 

 

 
  1. <sessionState cookieless="AutoDetect" /> 

配置時,當編寫到“cookieless=”語句時,將彈出 AutoDetect、useCookies、useDeviceProfile、useUri 四種選擇。選擇 AutoDetect 或 useUri 均可在無 Cookies 的條件下識別用戶。

雖然在 節點中還可以配置會話狀態管理的其他方面,包括存儲介質和連接字符串等,但是,就 Cookie 而言,只需設置 Cookieless 屬性即可。

系統是如何在無 Cookie 的條件下識別用戶的呢?原來當進行了前面的設置以后,系統將會要求用戶自動將客戶端的資源信息嵌入到用戶設用的 URL 語句中。例如,在使用 Cookie 的情況下,某用戶設用網頁時的 URL 是:http://yourserver/folder/default.aspx,現在設置了不使用 Cookie 的配置,調用的語句的 URL 將變成:http://yourserver/folder/(session ID here)/default.aspx,其中“session ID here”代表用戶的資源信息所處的位置。該信息已經被插入到 URL 的語句中。由于用戶資源信息對于用戶來說具有惟一性,因此可以利用它與 Session 對象結合,一起來識別用戶。

下面舉一個完整的小例子吧,請看下面的源代碼:

 

 
  1. HttpCookie ck = Request.Cookies["cktest"];  
  2. if (ck == null)  
  3. {  
  4. ck = new HttpCookie("cktest");  
  5. ck.Value = "123";  
  6.  
  7. ck.Expires = DateTime.Now.AddSeconds(20);//20秒的有效期  
  8. Response.Cookies.Add(ck);  
  9. Response.Write("new ck");  
  10. }  
  11. else 
  12. {  
  13. Response.Write(ck.Value.ToString());  
  14. }  
  15.  
  16. //在一個Cookie中儲存多個信息  
  17. HttpCookie cookie = new HttpCookie("cktest");  
  18. cookie.Values.Add("v1""1");  
  19. cookie.Values.Add("v2""2");  
  20. cookie.Values.Add("v3""3");  
  21. Response.AppendCookie(cookie);  
  22. HttpCookie cookies = Request.Cookies["cktest"];  
  23. string value1 = cookies.Values["v1"];  
  24. string value2 = cookies.Values["v2"];  
  25. Response.Write(value1 + value2); 

以上就是關于ASP.NET中Cookie狀態的說明與用法,對于Cookie 使用的利與弊說法不一,我們要合理使用Cookie希望本文對大家學習Cookie有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 静安区| 水富县| 界首市| 永宁县| 若尔盖县| 龙海市| 枣庄市| 夏津县| 长丰县| 揭阳市| 隆化县| 牡丹江市| 四会市| 株洲县| 娄烦县| 思茅市| 双城市| 衡阳县| 博罗县| 本溪| 哈尔滨市| 隆安县| 广元市| 合水县| 邵阳市| 寻甸| 营口市| 乌鲁木齐县| 宜阳县| 中江县| 龙口市| 犍为县| 潞西市| 前郭尔| 贵定县| 华亭县| 光山县| 鹤庆县| 天水市| 长丰县| 綦江县|