【发布时间】:2010-01-20 14:51:39
【问题描述】:
我正在开发一个 ASP.NET 应用程序,但我很难理解为什么 cookie 看起来为空。
在一个页面 (results.aspx) 上,我创建了一个 cookie,每次用户单击复选框时都会添加条目。当用户单击一个按钮时,他们会被带到另一个页面 (graph.aspx),在该页面中读取该 cookie 的内容。
问题是 cookie 在 graph.aspx 上似乎不存在。以下代码返回 null:
Request.Cookies["MyCookie"];
奇怪的是,这只是我们登台服务器上的一个问题。此应用程序已部署到生产服务器,一切正常。它在本地也能完美运行。
我在两个页面上都放了调试代码:
StringBuilder sb = new StringBuilder();
foreach (string cookie in Request.Cookies.AllKeys)
{
sb.Append(cookie.ToString() + "<br />");
}
this.divDebugOutput.InnerHtml = sb.ToString();
在 results.aspx 上(没有问题),我可以看到 cookie 是:
我的Cookie __utma __utmb __utmz _csoot _csuid ASP.NET_SessionId __utmc
在graph.aspx上,你可以看到没有'MyCookie'
__utma __utmb __utmz _csoot _csuid ASP.NET_SessionId __utmc
话虽如此,如果我看一下我的 FireCookie,我会发现两个页面上确实存在同一个 cookie! WTF?!?!?!?! (好吧,咆哮:-))
以前有人见过这样的东西吗?为什么 ASP.NET 会声称一个 cookie 在一个页面上为空,而在另一个页面上不为空?
【问题讨论】:
-
您使用的是哪个浏览器,您是否在多个浏览器上尝试过,结果相同?
-
Firefox 和 IE 8(以及 6)。两者都是一样的。