什么可能导致会话Cookie在会话中消失?

时间:2009-02-05 15:03:18

标签: internet-explorer cookies session

我有一个Web应用程序,它使用会话cookie来保持用户登录。当他们登录时,系统会生成一个GUID,它与数据库中的用户记录关联。然后将GUID存储在cookie中,以便可以在每个页面加载时读取它,并根据数据库条目进行检查。

设置cookie的代码非常简单。

Response.Cookies("UserSession")("ID") = vsSessionCookie
Response.Cookies("UserSession").path = "/"

尽管系统正在使用多年,但新客户已开始抱怨发生错误。当我们记录错误发生时的信息(包括cookie)时,我发现会话cookie根本就不存在了。看一下代码确实表明如果会话cookie走了,应用程序出错了。

请注意,应用程序使用的持久性cookie(设置了到期日期)仍然存在。

我知道它应该更优雅地处理它,但我感到困惑的问题是什么可能导致会话cookie消失。这不是用户在一段时间内处于非活动状态的情况,因为他们声称用户在使用系统时会随机发生。不幸的是,它们并不是更具体,但在一个案例中,我发现它发生在它们在系统中运行报告之后。此报告显示在一个新的浏览器窗口中(使用Window.Open在JavaScript中打开),因此关闭此窗口看起来会杀死原始窗口中的会话cookie。

系统(遗憾地)仅适用于IE,但我找不到任何会导致此行为的设置,并且对许多其他客户来说它很有效。

是否存在可能导致此行为的设置?为什么它对某些客户有效,而对其他客户无效?

也许它与关闭窗口无关,而其他一些过程是在会话期间清理会话cookie,但是什么?

这么多问题......对不起,但如果有人对这种情况有任何经验,那将会有很多帮助!

对于Information,Web系统是用ASP.Net编写的。还有一个用经典ASP编写的系统对客户来说也是如此,所以我不相信网络系统本身就有问题。

2 个答案:

答案 0 :(得分:2)

所有客户端都使用相同版本的IE吗?我也看过Windows防病毒软件清除cookie。

答案 1 :(得分:0)

自从IE6到现在IE8,我已经遇到过这样的问题。 问题似乎是当你启动IE(第一页是什么),如果它是一个本地页面(例如file:// c:\ a.htm)然后从那里你去实际的网站,(它仍然可以然后在你的网站上,它打开一个弹出窗口,然后当你关闭弹出窗口时(也就是当会话cookie被销毁时,cos之后,cookie中的所有数据都消失了,我就退出了。所以我的解决方案是(开始>运行>'iexplore http://www.mywebapp-site.com')

但我也遇到了问题,其中没有设置cookie中的某些数据集,仍然不知道..为什么..