2012-07-24 71 views
1

我正在使用c#和mvc。我正在嘗試向用戶瀏覽器寫入一個cookie。但是在刷新瀏覽器之後,cookie就消失了。刷新後Cookie不會持續

這是我的代碼寫的餅乾:

movieCookie = new HttpCookie(cookieName); 
movieCookie.Value = "test; 
movieCookie.Expires = DateTime.Now.AddDays(30); 
//add the cookie 
HttpContext.Current.Response.Cookies.Add(movieCookie); 

和一個用於讀取cookie的:

//check if such cookie exist 
HttpCookie movieCookie = null; 
if (HttpContext.Current.Request.Cookies.AllKeys.Contains(cookieName)) 
    movieCookie = HttpContext.Current.Request.Cookies[cookieName]; 

增加的另一件事是,當我搜索「AllKeys」就像這樣:

HttpContext.Current.Request.Cookies.AllKeys 

由於某種原因,它顯示一個空字符串數組。 有什麼想法?

+0

如果您使用的是IE的最新版本,您是否使用過F12來查看服務器和客戶端之間發送了什麼? – HABO 2012-07-24 12:45:35

+0

您說cookie會消失,所以您可以在瀏覽器中看到cookie?你能說,在哪個上下文中創建了cookie?如果上下文例如是「/」,則它應該可以被當前域下的所有頁面讀取。也許您的應用的默認上下文設置得太深。並且禁止其他頁面讀取cookie。 – 2012-07-24 12:47:16

回答

1

有些可能是愚蠢的問題

  • 檢查您的網絡服務器的時間和日期,是他們設置正確,如果他們(你的情況)2年以後它會立即過期餅乾。

  • 檢查cookieName相同

  • 檢查的cookie設置爲響應後設置Cookie之前你不是重定向。要設置cookie,您需要設置標題並將其推出。

+0

我將cookie過期更改爲30天,並檢查了cookie名稱,結果相同。沒有理解你的第三條評論 - 在我設置cookie之後,我返回到視圖(Mvc),然後再次從客戶端向控制器發送請求,並從那裏向cookie功能發送請求... – 2012-07-24 13:51:50

0

我解決了它。看起來,在MVC中,創建cookie後的「返回視圖」會導致cookie不被保存。