我有一个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编写的系统对客户来说也是如此,所以我不相信网络系统本身就有问题。
答案 0 :(得分:2)
所有客户端都使用相同版本的IE吗?我也看过Windows防病毒软件清除cookie。
答案 1 :(得分:0)
但我也遇到了问题,其中没有设置cookie中的某些数据集,仍然不知道..为什么..