2013-04-12 70 views
0

我面臨一個關於cookie的奇怪問題:我試圖在用戶第一次登錄到應用程序時設置一個帶有用戶ID的cookie,並且下一次如果cookie存在,不需要再次進行用戶認證。Cookie似乎永遠不存在

對於這個我使用下面的代碼:

  • 設置Cookie:

    HttpCookie userCookie = new HttpCookie("UserCookie"); 
    userCookie.Value = UserId.ToString(); 
    userCookie.Expires = DateTime.Now.AddHours(1); 
    System.Web.HttpContext.Current.Response.Cookies.Add(userCookie); 
    
  • 拿到餅乾:

    HttpCookie UserCookie = System.Web.HttpContext.Current.Request.Cookies["UserCookie"]; 
    if (UserCookie != null) 
    { 
         // redirect the user to another screen inside the application 
    } 
    

怪異事情是,我的cookie似乎不存在和用戶會一直提示登錄屏幕。當我嘗試使用調試時,在我看來,cookie不是null,但它有一個空字符串值。我能做些什麼呢?

非常感謝!

+0

UserId的類型是什麼?它是一個整數嗎? –

+0

是的,它有一個整數值。 – Crista23

+0

嘗試增加額外的小時數,而不僅僅是一個小時。而不是增加一個小時的時間,嘗試添加7天。它可能是瀏覽器解釋時間(UTC或其他)錯誤。 –

回答

1

您是否試圖在設置cookie的相同代碼中獲取cookie?如果是這樣,該cookie將不存在。頁面交付後,Cookie在用戶瀏覽器上獲取SET。

另外,你能否確認UserID.ToString()實際上並不是一個空字符串..?

要正確測試,請在頁面A上設置cookie,然後重定向到頁面B並在此處獲取cookie。

+0

感謝您的回覆。我可以確認UserID.ToString()不是空字符串,我也嘗試在登錄頁面中設置這個cookie並將它放入另一個頁面,它完美地工作。至於get和set部分,我在登錄頁面首先檢查cookie是否設置,如果沒有設置,我嘗試設置它。 – Crista23

+0

我真的很困惑......你說你在登錄中設置它,並可以完美地在另一個頁面上?您是否在下次訪問登錄頁面時cookie不存在? – Darren

+0

我終於弄清楚了:看起來是因爲我的cookie代碼只在某些變量不爲空時執行,並且因爲它們爲空,所以我的cookie沒有設置正確。感謝您試圖在另一個頁面獲取cookie值的建議,它幫助我弄明白了!謝謝! – Crista23