我試着用C#4.0中做一個永久性的Cookie和驗證碼:餅乾過期不工作在C#
HttpCookie AssoCookie = new HttpCookie("AssociateCode", AssociateCode);
AssoCookie.Expires = DateTime.Now.AddMonths(6);
HttpContext.Current.Response.Cookies.Add(AssoCookie);
不幸的是,它不工作,且Cookie會話過期。如果我使用Web開發的插件在Firefox來檢查它,我可以看到這個信息:
Name AssociateCode
Value test
Host localhost
Path /
Secure No
Expires At End Of Session
的餅乾,我做的是它只是在那裏創建了一個測試,沒有人否則將對其進行管理或編輯它,所以它不能覆蓋。我沒有在webconfig中設置cookie設置過期(無論如何這應該重寫),如果我設置了一些cookie過期時間,它不起作用。
我現在有點迷路了,每一個手冊,教程,博客,無論我檢查說,你只需要設置過期日期,我已調試,我檢查它創建時真的有這個值, Page_PreRender,但無論我做什麼,它都會隨着會話過期。
任何想法?
即時通訊使用Firefox 9.0.1順便說一句。
更新
在Firefox用Firebug插件來檢查響應頭,我得到這樣的:
Response Headersview source
Cache-Control private
Connection Close
Content-Length 21322
Content-Type text/html; charset=utf-8
Date Mon, 23 Jan 2012 16:47:08 GMT
Server ASP.NET Development Server/10.0.0.0
Set-Cookie AssociateCode=test; expires=Mon, 23-Jul-2012 16:09:04 GMT; path=/
X-AspNet-Version 4.0.30319
而且使用招我得到這個:
HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
Set-Cookie: AssociateCode=; expires=Mon, 23-Jul-2012 16:27:29 GMT; path=/
X-Powered-By: ASP.NET
Date: Mon, 23 Jan 2012 17:27:29 GMT
Content-Length: 21313
**更新2 * * 我檢查Cookie不存在只是檢查我的Firefox的Cookie,但如果你想看看如何我明白了在後面的代碼(不是必須的,因爲它不是在那裏反正):
try {
AssociateCode = HttpContext.Current.Request.Cookies.Get("AssociateCode").Value;
} catch { }
您確定cookie本身即將過期,還是由於會話的行爲方式似乎過期?調試期間會話過期後,Cookie是否實際上不再附加到請求? –
如果我關閉瀏覽器窗口並再次打開,cookie就會消失。這種情況發生時不需要向頁面提出任何要求。所以它的截止日期確實是「會話結束」。 –
我測試過了,沒有問題。瀏覽器在關閉它並重新打開它之後還記得這個cookie。我建議使用Fiddler來仔細檢查cookie是否真的被髮送到瀏覽器並帶有正確的過期標題,並且瀏覽器在關閉/重新打開後正確地將其發送回網站。 – MerickOWA