2015-06-09 98 views
2

我想了解cookie。但有一點我不明白。希望你能幫我。如何分配cookie過期日期?

我寫了一個短代碼:

using System; 
using System.Web; 

namespace WebApplication1 
{ 
    public partial class WebForm1 : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      if (Request.Cookies["Test2"] == null) 
      { 
       Response.Cookies["Test2"]["Address"] = "Home"; 
       Response.Cookies["Test2"].Expires = DateTime.Now.AddSeconds(60); 
      } 

     } 

     protected void Button2_Click(object sender, EventArgs e) 
     { 
      Response.Cookies["Test2"]["Address"] = "Work"; 
     } 
    } 
} 

首先,我要檢查是否有一個名爲「Test2的」一個cookie。它創建一個名爲「Test2」的cookie。它的失效日期是在創建後一分鐘。

enter image description here

然後,我按一下按鈕,它傳遞的if語句和變更地址的工作。但是當我看着cookie的失效日期已經過去了。

過期:當瀏覽會話結束

http://i.imgur.com/uNWPBRF.png

爲什麼這個到期日的變化?你可以幫我嗎?

回答

3

您正在嘗試修改該cookie,這將使創建一個新的cookie,並且由於您尚未指定ExpiryDate,因此它僅限於會話何時結束。

ASP.NET Cookies Overview

您不能直接修改的cookie。相反,更改Cookie 包括創建一個包含新值的新cookie,然後將cookie發送到瀏覽器以覆蓋客戶端上的舊版本。

另外:

如果不設置cookie的有效期,創建Cookie,但 它不是存儲在用戶的硬盤上。相反,cookie是作爲用戶會話信息的一部分維護的 。當用戶 關閉瀏覽器時,該cookie將被丟棄。

那麼你的選擇是要麼不修改cookie值(使用一些其他機制像DB),或指定不同的到期日與每個修改。

+0

謝謝!很有幫助 –