c# - Cookie 过期在 C# 中不起作用

标签 c# .net cookies

我正在尝试使用 C# 4.0 和以下代码制作持久性 cookie:

HttpCookie AssoCookie = new HttpCookie("AssociateCode", AssociateCode);
AssoCookie.Expires = DateTime.Now.AddMonths(6);
HttpContext.Current.Response.Cookies.Add(AssoCookie);

不幸的是,它不起作用并且 cookie session 即将过期。如果我在 Firefox 中使用 Web Developer 插件来检查它,我可以看到以下信息:

Name    AssociateCode
Value   test
Host    localhost
Path    /
Secure  No
Expires At End Of Session

我作为测试所做的 cookie 刚刚在那里创建,没有其他人管理或编辑它,因此它不能被覆盖。我没有在 webconfig 中设置任何设置 cookie 过期时间(无论如何这应该覆盖它)并且如果我设置一些 cookie 过期时间它不起作用。

我现在有点迷茫了,每本手册、教程、博客,无论我检查什么,都说你只需要设置到期日期,我调试过,我检查过它在创建时和 Page_PreRender 结束时确实具有该值但无论我做什么,它都会随着 session 而过期。

有什么想法吗?

顺便说一句,我使用的是 Firefox 9.0.1。

更新

在 Firefox 中使用 Firebug 插件检查响应 header 我得到了这个:

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 { }

最佳答案

只是为了跟进我的评论:

来自 fiddler 和 firefox 工具的信息表明您正在发送正确的信息来创建 cookie。

这让我相信您错误地测试了它的存在。

当测试 cookie 是否传递给您的应用程序时,您应该使用 Request.Cookies 容器来查看它是否存在。 (请注意,它是REQUEST 而不是RESPONSE)。

如果您使用类似的东西进行测试:

if (Response.Cookies["mycookie"] == null) { .. }

然后这将导致在响应对象中创建一个空白的新 cookie。

总结一下:Request 对象将包含从浏览器发送的所有内容。 Response 对象是您发送给浏览器的所有内容。

关于c# - Cookie 过期在 C# 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8973628/

相关文章:

c# - 如何知道哪个线程最好使用 Visual Studio 调试器(.net 编程)锁定?

c# - 依赖注入(inject) wcf

.net - asmx 服务可以不返回任何内容而不是 null 吗?

c# - WPF - 将可见性绑定(bind)到键的状态

java - 带有 Cookie 的 Android MediaPlayer URL

php - 如何实现文章的独特点击

javascript - C#中设置Cookie并Jquery中访问

c# - Expression<Func<>> 和 Func<> 的区别

C# Specflow - 需要功能和场景标题而不使用 FeatureContext 和 ScenarioContext

c# - 可选的 C# 参数问题