2017-06-08 110 views
1

我設置一個cookie,像這樣的Cookie有效期:工作不C#

protected void SetCookie(bool value, int expiration) 
{ 
    var cookie = Response.Cookies[COOKIE_NAME] ?? new HttpCookie(COOKIE_NAME); 
    cookie.Value = value.ToString(); 
    cookie.Expires = DateTime.UtcNow.AddDays(expiration); 
    Response.Cookies.Set(cookie); 
} 

在SetCookie函數,當我檢查的最後一行的餅乾,過期設置爲明天的日期。

然而,當我檢索下一個頁面加載這個cookie:

var cookie = Request.Cookies[COOKIE_NAME]; 

cookie的存在,但到期日期是1/1/0001 12:00:00 AM

+1

參照您的第一個代碼塊:您應該從Request.Cookies中讀取/檢索Cookie,而不是響應。 – Igor

+0

@Igor我認爲它實際上並不重要,因爲無論如何都會覆蓋屬性。正如所寫的,我認爲如果'SetCookie'被多次調用,它就會重用cookie對象。就個人而言,我會完全移除支票並始終初始化一個新實例。 – ryachza

+0

您是否檢查過更改過期日期的客戶端代碼,因爲Cookie可能會在客戶端進行更改,可能會導致此問題。 – vivek

回答

0

默認的日期值我相信期滿是一個客戶端邊的東西。瀏覽器應發送任何未過期的cookie,但不發送過期日期(僅限名稱和值)。我認爲您應該重新設置並刷新每個請求的到期日期。

這是第一格式參考,我發現:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cookie

如果您需要檢索過期數據服務器端不管是什麼原因,我將它包含在cookie內容或設置一個二級cookie來保存這些信息。