【发布时间】:2014-06-25 18:39:04
【问题描述】:
有些用户关闭所有浏览器,再次打开IE8,登录页面提示“Session Expired”,很奇怪,只是偶尔出现。
显示该消息的条件是:
var sessionTimedOut = Session.IsNewSession && Request.Headers["Cookie"] != null && Request.Headers["Cookie"].Contains(ASPNET_SESSION_COOKIE);
通常,当浏览器关闭时,所有 cookie 都会消失,因为这是这些 cookie 的范围。
那么是什么导致这种情况成立呢?
【问题讨论】:
-
编辑:我可以通过等待会话过期,然后在任务管理器上终止浏览器,然后打开浏览器并明确转到登录页面 (myserver.com/Web/Authentication/Login) 来复制问题,但我没有'不要相信我的用户正在杀死浏览器 - 我相信他们甚至不知道如何做到这一点......
-
它可能与特定的IE8行为stackoverflow.com/questions/1324181/…有关。你能问问你的用户他们到底在做什么吗?
-
只是猜测,如果您使用表单身份验证,请将 cookie 设置为持久化。
-
什么是 ASPNET_SESSION_COOKIE?
-
如果你能够重现它,那么也许可以使用像 Fiddler 这样的工具来检查 HTTP 请求并查看会话 id 是如何传递回服务器的(即 cookie、url、http 标头)。看看ASP.NET State Management 寻找一些东西。
标签: asp.net-mvc session cookies