我试图使用C#4.0和这段代码制作一个持久性cookie:
HttpCookie AssoCookie = new HttpCookie("AssociateCode",AssociateCode); AssoCookie.Expires = DateTime.Now.AddMonths(6); HttpContext.Current.Response.Cookies.Add(AssoCookie);
不幸的是,它不起作用,cookie会话到期.如果我在Firefox中使用Web Developer插件进行检查,我可以看到以下信息:
Name AssociateCode Value test Host localhost Path / Secure No Expires At End Of Session
我正在做的cookie作为它刚刚在那里创建的测试,没有其他人管理它或编辑它所以它不能被覆盖.我没有在webconfig中设置任何设置cookie到期(无论如何这应该覆盖它),如果我设置一些cookie到期时间它不起作用.
我现在有点迷失,每个手册,教程,博客,无论我检查说你只需要设置过期日期,我已经调试过,我检查过它确实在创建时和Page_PreRender结束时有这个值,但它只是无论我做什么都会到期.
有任何想法吗?
我使用Firefox 9.0.1 btw.
更新
在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
使用Fiddler我得到了这个:
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 { }