溫馨提示×

溫馨提示×

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

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

如何在ASP.NET中查看Cookie狀態(tài)

發(fā)布時間:2021-03-05 15:21:51 來源:億速云 閱讀:233 作者:Leah 欄目:開發(fā)技術

如何在ASP.NET中查看Cookie狀態(tài)?相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

ASP.NET 是什么

ASP.NET 是開源,跨平臺,高性能,輕量級的 Web 應用構建框架,常用于通過 HTML、CSS、JavaScript 以及服務器腳本來構建網(wǎng)頁和網(wǎng)站。

    可以通過 Response.Cookies.Add() 方法直接向瀏覽器寫入 Cookie,通過 Request.Cookies 方法讀取已經(jīng)設置好的 Cookie。
    寫入Cookie 的方法是,先創(chuàng)建一個HttpCookie 對象,通過這個對象來構造一個 Cookie。例如:

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

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

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

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

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

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

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

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

<sessionState cookieless="useUri" />

    或

<sessionState cookieless="AutoDetect" />

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

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

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()); 
} 
   
//在一個Cookie中儲存多個信息 
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);

看完上述內(nèi)容,你們掌握如何在ASP.NET中查看Cookie狀態(tài)的方法了嗎?如果還想學到更多技能或想了解更多相關內(nèi)容,歡迎關注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細節(jié)

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

AI