2009-02-05 29 views
1

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

设置cookie的代码非常简单。

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

尽管系统已使用多年,但新客户端已开始抱怨发生错误。当我们记录有关错误的信息(包括Cookie)时,我发现会话cookie不再存在。看看代码确实表明,如果会话cookie正在散步,那么应用程序出错。

请注意,应用程序使用的持久性cookie会保留。

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

该系统(可悲)只适用于IE浏览器,但我找不到任何会导致此行为的设置,并且它可以为许多其他客户端快乐地工作。

是否有可能导致此行为的设置?为什么它应该适用于某些客户,而不是其他客户?

也许它与关闭窗口无关,而其他一些进程正在清理session session中的会话cookie,但是什么?

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

有关信息,网络系统是用ASP.Net编写的。还有一个用传统的ASP编写的系统对客户端来说也是一样,所以我不相信网络系统本身存在问题。

回答

2

所有客户端是否使用相同版本的IE?我也在Windows上看到反病毒软件清除cookies。

+0

我没有与直接接触客户,这个人,目前似乎不知道!一旦我找到关于客户设置的更多信息,我会更新这个帖子。 – 2009-02-05 15:41:21

0

从IE6到现在的IE8,我都遇到过这样的问题。 问题似乎是当您启动IE浏览器(首页是什么)时,如果它的本地页面(例如文件:// c:\ a.htm),然后从那里你去实际的网站,(它仍然是确定),然后在你的网站上打开一个弹出窗口,然后当你关闭弹出窗口时(即当会话cookie被破坏时,因为cookie中的所有数据都消失了,我就退出了。到(开始>运行>“IEXPLORE http://www.mywebapp-site.com”)

但我也遇到因一些数据cookie中设置未设置,仍然不知道问题..为什么..