ASP.NET實現Cookie功能的三個基本操作(寫入,讀取,刪除)__.net

來源:互聯網
上載者:User


 1   //建立一個HttpCookie對象 2         HttpCookie cookie = new HttpCookie("RON"); 3         //設定此cookies值 4         cookie.Value = "我叫小魏"; 5         //設定cookie的生命週期,在這裡定義為三分鐘 6         DateTime dtNow = DateTime.Now; 7         TimeSpan tsMinute = new TimeSpan(0, 0, 3, 0); 8         cookie.Expires = dtNow + tsMinute; 9         cookie["Name"] = "小魏";10         cookie["Sex"] = "男";11         cookie["Age"] = "22";12         //加入此cookie13         Response.Cookies.Add(cookie);14         Response.Write("Cookie建立完畢");

HttpCookie 在 System.Web 這個命名空間裡面,所以你需要引用

1 using System.Web;

 

*建立Cookie

建立Cookie的時候必須指定Cookie的Name和Value。在例子中,cookie 的Name是“RON”,Value是“我叫小魏”。cookie是儲存在瀏覽器當中的,而每個Cookie的區別是根據Name這個屬性的值來確定的。所以,如果Name相同,Cookie的內容將被覆蓋。而那些cookie["Name"]等等是cookie["RON"]的子鍵。

 

*Cookie有效期間

Cookie的另外一個重要的屬性是有效期間。通過屬性Expires設定。例子中,cookie設定的有效期間為三分鐘。目前為止,最長的有效期間是50年,這是那個丫地設定的啊。有50年的公司都不錯了。其實在有效期間的設定上我更喜歡這句話。

cookie.Expires = DateTime.Now.AddMinutes(3);

簡單,容易理解。

在有效期間的問題上,有兩個時間比較特殊:

#永續性 Cookie 設定永遠不到期 最長為50年

#非永續性 Cookie 不設定有效期間 關閉瀏覽器即消失

 

*多值cookie

Cookie可以儲存多個值,你只要建立一個帶子鍵的Cookie就可以了。例如

1 HttpCookie aCookie = new HttpCookie("userInfo");2 aCookie.Values["userName"] = "rond";3 aCookie.Values["lastVisit"] = DateTime.Now.ToString();4 aCookie.Expires = DateTime.Now.AddDays(1);

例子中建立了一個Name為userInfo的Cookie,而且此Cookie還帶有兩個子鍵。

 

*Cookie的範圍

預設情況下,Cookie的整個網站都是有效。意思就是說,在同一個網站(也可以理解成同一個網域名稱)下的所有網頁都是可以擷取到Cookie的。如果你不希望你的Cookie在所有範圍都有效。你可以限定Cookie的範圍。方法是通過Cookie的Path屬性,屬性值為範圍所在的路徑,相對路徑有效。譬如

1 appCookie.Path = "/Application1";

 除了限定Cookie的路徑範圍,還可以用Cookie的Domain屬性限定Cookie的網域名稱範圍。例如

1 appCookie.Domain = "jsjx.gdufs.edu.cn";

例子中將cookie限定在“廣東外語外貿大學”的“資訊學院”(jsjx.gdufs.edu.cn)網站下,而不會再“廣東外語外貿大學”(gdufs.edu.cn)的主網站上面產生效果。

*提交Cookie

Cookie是儲存在瀏覽器的東西,所以需要提交才能將資訊儲存在瀏覽器當中。

1 Response.Cookies.Add(aCookie);

這樣就可以將資料儲存在瀏覽器當中了。

 

PS:Cookie的建立還有另外一種方式,可以參考MSDN的說明。

 

讀取:

 

先來個例子

          //獲得cookie        HttpCookie cookie = Request.Cookies["RON"];          //確定是否存在使用者輸入的cookie          if (null == cookie)          {              Response.Write("沒有發現指定的cookie。");          }         else         {             //找到指定的cookie,顯示cookie的值             String strCookieValue = cookie.Value.ToString();             Response.Write( " cookie 的值為: " + strCookieValue + " <br >");             Response.Write(cookie["UserName"]);         }


*擷取

通過Request響應,我們可以擷取到Request.Cookies["RON"].根據原本的設定可以將Cookie的值讀取出來。cookie.Value可以擷取到Cookie儲存的所有值。不過個人比較喜歡cookie["UserName"]的方式擷取自己想要的cookie的值。

如果你是通過多值設定了Cookie的子鍵。那麼擷取方式和設定方式是差不多的。


*讀取多個Cookie

在一個瀏覽器上面,可能儲存了不止一個cookie。但是怎麼擷取所有的cookie呢。寫個迴圈就出來了。

        for (int i = 0; i < Request.Cookies.Count; i++)        {            Response.Write("Cookie[" + i + "]的Name為:" + Request.Cookies[i].Name + "<br/>");            Response.Write("Cookie[" + i + "]的Value為:" + Request.Cookies[i].Value + "<br/>");        }

如果你不想把子鍵的鍵/值都顯現在一起,而想單個擷取。也可以寫個迴圈全部顯示出來。

        //顯示子鍵        for (int i = 0; i < Request.Cookies.Count; i++)        {            Response.Write("Cookie[" + i + "]的Name為:" + Request.Cookies[i].Name + "<br/>");            if (Request.Cookies[i].HasKeys)            {                for (int j = 0; j < Request.Cookies[i].Values.Count; j++)                {                    Response.Write("Cookie[" + i + "][" + j + "]的Name為:" + Request.Cookies[i].Values.AllKeys[j] + "<br/>");                    Response.Write("Cookie[" + i + "][" + j + "]的Value為:" + Request.Cookies[i].Values[j] + "<br/>");                }            }        }

 

刪除:

 

Cookie儲存在瀏覽器端,儲存時間是開發人員設定的時間,當時間到期時,瀏覽器端就會刪除Cookie。所以刪除Cookie的工作就是將Cookie的有效期間設定到期即可。你可以設定有效期間為目前時間,Cookie立即到期。也可以設定過去的時間,Cookie也會被刪除。

如例子,我當初建立了一個叫做RON的Cookie,現在我要刪除它。所以要建立一個同名的Cookie,時間設定為過去。

*刪除某一個Cookie

 HttpCookie aCookie= new HttpCookie("RON"); aCookie.Expires = DateTime.Now.AddDays(-1); Response.Cookies.Add(aCookie);

這樣就可以將Cookie["RON"]刪除。

可能你不記得你在測試的時候瀏覽器端到底儲存了多少個Cookie,你可以寫個迴圈將Cookie全部刪除掉。

*刪除所有Cookie

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.