的ASP.NET的HttpCookie類不能初始化在閱讀從HTTP請求一個cookie(因爲HTTP規範不要求客戶機甚至過期值發送到服務器中的Expires屬性第一名)。如果您在將Cookie設置回HTTP響應之前沒有設置Expires屬性,那麼它會將其變爲會話Cookie而不是持久性cookie。
如果你真的必須保留期滿,比你能設置初始到期日爲cookie值的一部分,那麼當你在讀取cookie,解析出的值,並設置新的到期相匹配。
不包括任何其他數據,因此Cookie是不是真的有幫助的一個例子 - 你將不得不與實際數據以某種方式序列化要存儲:
HttpCookie cookie = HttpContext.Current.Request.Cookies[constantCookie];
DateTime expires = DateTime.Now.AddYears(1);
if (cookie == null) {
cookie = new HttpCookie(constantCookie);
} else {
// cookie.Value would have to be deserialized if it had real data
expires = DateTime.Parse(cookie.Value);
}
cookie.Expires = expires;
// save the original expiration back to the cookie value; if you want to store
// more than just that piece of data, you would have to serialize this with the
// actual data to store
cookie.Value = expires.ToString();
HttpContext.Current.Response.Cookies.Set(cookie);
「有什麼意義有過期,如果每次更新cookie值,過期也是如此?「 - 其實這就是你想要很多時間。類似情景:「如果你不訪問了一個月,我們會約你忘記」,取決於你每次訪問該cookie的時間設置爲過期一個月因此事實。 – 2010-04-22 20:05:08
非常真實,在這一點上我肯定會同意你的意見。 – aherrick 2010-04-22 20:19:53