【问题标题】:Cookies NULL On Some ASP.NET Pages (even though it IS there!)某些 ASP.NET 页面上的 Cookie 为 NULL(即使它存在!)
【发布时间】: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)。两者都是一样的。

标签: asp.net cookies


【解决方案1】:

发生这种情况是因为我在不同的虚拟目录下运行应用程序。当我在原始版本上运行它时,它起作用了。

【讨论】:

    【解决方案2】:

    我建议加载 IIS 调试诊断工具。完全有可能在该特定服务器上存在资源问题或未处理的异常,在将该特定 cookie 添加到响应之后但在刷新给用户之前杀死该特定 cookie。这基本上是由一系列快速连续发生的异常引起的,导致快速故障保护关闭您的页面正在运行的 w3wp.exe 进程。当进程被假脱机以提供响应时,cookie 消失了,所有的都是呈现的 html。

    您也可以尝试关闭快速故障保护或更改应用程序池上的内存设置/回收设置。

    【讨论】:

      猜你喜欢
      • 2010-12-27
      • 1970-01-01
      • 1970-01-01
      • 2014-11-15
      • 1970-01-01
      • 1970-01-01
      • 2021-08-09
      • 2014-02-10
      • 1970-01-01
      相关资源
      最近更新 更多