關於COOKIES需要注意的一點

COOKIES是很方便使用,也是很廣泛使用的狀態存儲體

 

由於COOKIES的設置簡單,使用起來也很方便,因此,平時直接讀寫COOKIE的過程中並沒有發現COOKIE的Expires問題。

 

當從 REQUEST獲取一個COOKIES實例後,如果不重新設置Expires的情況下再次將COOKIES發送到客戶端,Expires會變成關閉頁面過期。

 

舉個例:

 

先在一個頁面裏發送COOKIES

 

 HttpCookie _currentCookie;

_currentCookie = new HttpCookie("test");

_currentCookie.Expires = DateTime.Now.AddYears(1);

Response.AppendCookie(_currentCookie);

 

 

 

然後再另一個頁面將它接收

 

 HttpCookie _currentCookie;

 _currentCookie = Request.Cookies["test"];

 

此時,我們可以通過獲取並顯示出Expires過期時間。

Response.Write(_currentCookie.Expires.ToString());

 

照常理,我們沒有改動這個COOKIES,獲取後原封不動的有發送到了瀏覽器,應該不會有什麼變化。

但是實際上會發現一個問題

_currentCookie["test"].Expires 變成了 0001-1-1 關閉頁面後即過期。

 

通過以上實驗,發現,實際上我們無法獲取COOKIES的Expires屬性,所以,在使用Response.AppendCookies的時候,如果該實例沒有重新設置Expires,則Expires會以默認設置(頁面關閉過期)被髮送,因此每次發送COOKIE如果你希望有過期時間都必須重新設置。

 

 

這個問題是我在封裝COOKIE時遇到的,雖然以前也非常經常的用到COOKIES,但是這次因爲想封裝成一個獨立的類,所以在精簡代碼的過程中遇到這樣的問題!

 

看來,不管多熟悉的東西,它總會有讓人陌生的一面,需多多學習!

 

當然,這是在.NET2.0 C#中,似乎1.1中是可以獲取REQUEST過來的COOKIE的Expires屬性的。

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章