2010-01-20 25 views
1

我正在研究ASP.NET应用程序,但我很难理解为什么cookie看起来为空。Cookie在某些ASP.NET页面上为NULL(即使它存在!)

在一个页面(results.aspx)上,我创建了一个cookie,每次用户单击一个复选框时添加条目。当用户点击一个按钮时,它们被带到另一个页面(graph.aspx),在那里读取该cookie的内容。

问题是,cookie似乎不存在graph.aspx上。以下代码返回空值:

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(其中不存在任何问题),我可以看到饼干是:

的myCookie __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在一页上为空,而在另一页上不为空?

+0

您使用的是哪种浏览器?您是否在多个浏览器上尝试过这种浏览器,结果相同? – Nick 2010-01-20 15:07:41

+0

Firefox和IE 8(还有6个)。两者都是一样的。 – DaveDev 2010-01-20 15:50:17

回答

1

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

0

我会建议加载IIS调试诊断工具。在特定的服务器上完全有可能存在资源问题或未处理的异常,它会在将特定的cookie添加到响应之后但在向用户刷新之前将其杀死。这主要是由于快速连续发生的一系列异常导致快速失败保护关闭运行您的页面的w3wp.exe进程。当这个进程被回滚到提供响应的时候,这个cookie就不存在了,所有这些都会被呈现的html。

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

相关问题