佳木斯湛栽影视文化发展公司

主頁 > 知識(shí)庫 > ASP.NET中Cookie狀態(tài)的說明與用法

ASP.NET中Cookie狀態(tài)的說明與用法

熱門標(biāo)簽:網(wǎng)站排名優(yōu)化 地方門戶網(wǎng)站 硅谷的囚徒呼叫中心 服務(wù)器配置 集中運(yùn)營管理辦法 百度競(jìng)價(jià)排名 科大訊飛語音識(shí)別系統(tǒng) 阿里云

Cookie 最早出現(xiàn)是在Netscape Navigator 2.0 中。后來 ASP 也引入了這個(gè)技術(shù),它的作用是與 Session 對(duì)象相結(jié)合來識(shí)別用戶。每當(dāng)用戶開始連接站點(diǎn)時(shí),系統(tǒng)將自動(dòng)在內(nèi)存塊中創(chuàng)建一個(gè)用戶有關(guān)的會(huì)話狀態(tài),同時(shí)創(chuàng)建一個(gè)用戶的 ID 存放在瀏覽器端,與當(dāng)前的用戶惟一地聯(lián)系起來。這樣,服務(wù)器保存了 Session,瀏覽器保存了 Cookie(用戶的 ID)。當(dāng)下一次用戶發(fā)出請(qǐng)求時(shí),請(qǐng)求的用戶將被要求提交用戶的 ID,兩者對(duì)照以正確地還原原來的會(huì)話狀態(tài)。這就是在無狀態(tài)協(xié)議的 HTTP 條件下保持用戶標(biāo)志的方法。
    可以通過 Response.Cookies.Add() 方法直接向?yàn)g覽器寫入 Cookie,通過 Request.Cookies 方法讀取已經(jīng)設(shè)置好的 Cookie。
    寫入Cookie 的方法是,先創(chuàng)建一個(gè)HttpCookie 對(duì)象,通過這個(gè)對(duì)象來構(gòu)造一個(gè) Cookie。例如:

//創(chuàng)建一個(gè) HttpCookie 對(duì)象 
HttpCookie cookie = new HttpCookie("樂豬網(wǎng)"); 
//設(shè)定此 Cookie 值 
cookie.Value = "編程入門網(wǎng)站"; 
//加入此 Cookie 
Response.Cookies.Add(cookie);

    Cookie 有臨時(shí)的,也有永遠(yuǎn)的。永久的 Cookie 以文件形式存儲(chǔ)在計(jì)算機(jī)上,關(guān)閉 Internet Explorer 時(shí)仍然保留在計(jì)算機(jī)上。再次訪問該站點(diǎn)時(shí),創(chuàng)建該 Cookie 的網(wǎng)站可以讀取。在具體的編程時(shí)候,是在寫入此 Cookie 的時(shí)候,設(shè)定 Cookie 的生命周期,其代碼如下:

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

    以上代碼是設(shè)定新產(chǎn)生的 Cookie 的生命期為一個(gè)小時(shí),可以通過修改 TimeSpan 的屬性來設(shè)定 Cookie 具體的生命期。如果不設(shè)定時(shí)間,默認(rèn)時(shí)間為 20 分鐘。
    讀取指定的 Cookie 時(shí)的語句如下:

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

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

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

    Cookie 是保存在客戶端的字符串,它會(huì)影響用戶的行為,但又不受用戶的直接管理,雖然它只是一種標(biāo)志(字母數(shù)字字符串)而不是程序,不可能用它來收集用戶的信息,破壞用戶的隱私。但有的用戶仍然不放心,也可能是不愿意別人占用自己的空間,相當(dāng)一部分用戶在瀏覽器中禁止使用 Cookie。這就給識(shí)別用戶帶來了困難。
    ASP.NET 2.0 現(xiàn)在已經(jīng)完全解決了在不使用 Cookie 的情況下,識(shí)別用戶的方法(ASP.NET 1.1 版本只部分地解決了這一問題)。解決的方法很簡(jiǎn)單,只需要在應(yīng)用程序的根目錄下的 Web.config 文件中,對(duì) sessionState> 節(jié)點(diǎn)進(jìn)行配置,其他任何程序都不需要修改。為什么一定要在應(yīng)用程序的根目錄下配置?因?yàn)闀?huì)話狀態(tài)的設(shè)置是應(yīng)用程序范圍的設(shè)置。站點(diǎn)中的網(wǎng)頁要么全都使用該配置,要么全都不使用。配置的語句是:

sessionState cookieless="useUri" />

    或

sessionState cookieless="AutoDetect" />

    配置時(shí),當(dāng)編寫到“cookieless=”語句時(shí),將彈出 AutoDetect、useCookies、useDeviceProfile、useUri 四種選擇。選擇 AutoDetect 或 useUri 均可在無 Cookies 的條件下識(shí)別用戶。
    雖然在 sessionState> 節(jié)點(diǎn)中還可以配置會(huì)話狀態(tài)管理的其他方面,包括存儲(chǔ)介質(zhì)和連接字符串等,但是,就 Cookie 而言,只需設(shè)置 Cookieless 屬性即可。
    系統(tǒng)是如何在無 Cookie 的條件下識(shí)別用戶的呢?原來當(dāng)進(jìn)行了前面的設(shè)置以后,系統(tǒng)將會(huì)要求用戶自動(dòng)將客戶端的資源信息嵌入到用戶設(shè)用的 URL 語句中。例如,在使用 Cookie 的情況下,某用戶設(shè)用網(wǎng)頁時(shí)的 URL 是:http://yourserver/folder/default.aspx,現(xiàn)在設(shè)置了不使用 Cookie 的配置,調(diào)用的語句的 URL 將變成:http://yourserver/folder/(session ID here)/default.aspx,其中“session ID here”代表用戶的資源信息所處的位置。該信息已經(jīng)被插入到 URL 的語句中。由于用戶資源信息對(duì)于用戶來說具有惟一性,因此可以利用它與 Session 對(duì)象結(jié)合,一起來識(shí)別用戶。

下面舉一個(gè)完整的小例子吧,請(qǐng)看下面的源代碼:

HttpCookie ck = Request.Cookies["cktest"]; 
if (ck == null) 
{ 
  ck = new HttpCookie("cktest"); 
  ck.Value = "123"; 
   
  ck.Expires = DateTime.Now.AddSeconds(20);//20秒的有效期 
  Response.Cookies.Add(ck); 
  Response.Write("new ck"); 
} 
else
{ 
  Response.Write(ck.Value.ToString()); 
} 
   
//在一個(gè)Cookie中儲(chǔ)存多個(gè)信息 
HttpCookie cookie = new HttpCookie("cktest"); 
cookie.Values.Add("v1", "1"); 
cookie.Values.Add("v2", "2"); 
cookie.Values.Add("v3", "3"); 
Response.AppendCookie(cookie); 
HttpCookie cookies = Request.Cookies["cktest"]; 
string value1 = cookies.Values["v1"]; 
string value2 = cookies.Values["v2"]; 
Response.Write(value1 + value2);

以上就是關(guān)于ASP.NET中Cookie狀態(tài)的說明與用法,對(duì)于Cookie 使用的利與弊說法不一,我們要合理使用Cookie希望本文對(duì)大家學(xué)習(xí)Cookie有所幫助。

您可能感興趣的文章:
  • asp.net(C#)跨域及跨域?qū)慍ookie問題
  • asp.net中的cookie使用介紹
  • asp.net關(guān)于Cookie跨域(域名)的問題
  • Asp.net內(nèi)置對(duì)象之Cookies(簡(jiǎn)介/屬性方法/基本操作及實(shí)例)
  • asp.net Cookie值中文亂碼問題解決方法
  • asp.net中使用cookie與md5加密實(shí)現(xiàn)記住密碼功能的實(shí)現(xiàn)代碼
  • ASP.NET之Response.Cookies.Remove 無法刪除COOKIE的原因
  • asp.net網(wǎng)站防惡意刷新的Cookies與Session解決方法
  • asp.net利用cookie保存用戶密碼實(shí)現(xiàn)自動(dòng)登錄的方法
  • ASP.NET中Cookie的用法實(shí)例分析

標(biāo)簽:開封 烏蘭察布 隨州 梧州 威海 西雙版納 廣西 甘孜

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《ASP.NET中Cookie狀態(tài)的說明與用法》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    磐石市| 资源县| 普宁市| 绥宁县| 鄯善县| 多伦县| 高密市| 龙口市| 台州市| 历史| 丹巴县| 聂荣县| 广元市| 普洱| 湾仔区| 盐城市| 建始县| 汝阳县| 厦门市| 响水县| 苏州市| 磐石市| 读书| 甘泉县| 湛江市| 诸暨市| 全南县| 新乡市| 桦甸市| 错那县| 惠来县| 宁河县| 宿州市| 绥江县| 商河县| 西乡县| 桓台县| 蒙阴县| 衡阳县| 凉山| 纳雍县|