【问题标题】:Session Variables being remembered after Session.Abandon (IE 11 only)在 Session.Abandon 之后记住的会话变量(仅限 IE 11)
【发布时间】:2014-06-19 19:04:47
【问题描述】:

我有一个 asp.net 会话,它在应用 Session.Abandon 和 Session.Contents.RemoveAll 后返回以前保存的数据。注意:这只发生在运行 Windows 7 和 IE 11 的单台计算机上。会话变量会根据需要在其他 IE 浏览器和 Chrome 上下降。另外,我的开发箱运行的是 IE 11,在这里运行良好。只是这个系统似乎有一个会话幽灵。

代码使用会话变量来跟踪访问网站以提供内容的匿名用户。多个用户可能使用同一台计算机,因此我设置了一个“更改用户”例程,该例程放弃会话并将浏览器重定向回 default.aspx 页面,登录弹出窗口请求新信息。

但是结果是“前一个用户”访问的每个页面都显示了旧用户的凭据。查看的每个其他页面都会显示“当前用户”的凭据。我使用一个会话变量来跟踪所有这些页面的用户。

更改用户:

//Drops session and forces user back to default.aspx to be logged in.
protected void Change_User(object sender, EventArgs e)
{
    Session.Abandon();
    Session.Contents.Abandon();
    Session.Contents.RemoveAll(); 
    Response.Redirect("~/default.aspx");
}

对我来说,这听起来像是一个 IE 11 配置问题。但我从未见过会话变量将自身附加到单个 URL。

【问题讨论】:

  • 您确定不是其他用户之前访问过的页面的缓存问题?
  • 用户的浏览器设置为“从不”检查存储页面的较新版本。这似乎一直保持着旧的价值观。谜团已揭开!谢谢!
  • 好了!我会将该评论放入实际答案中,以便它可以被接受,并且这个问题将不再显示为未回答。 :)

标签: c# asp.net session internet-explorer-11


【解决方案1】:

由于这是多个用户之间的共享机器,听起来页面可能会在本地缓存。要求用户尝试硬刷新 (CTRL+F5) 以确认这一点。然后检查他们的本地设置:

在 IE11 下 Internet 选项 -> 常规选项卡,在“浏览历史记录”部分下 -> 单击设置按钮 -> 将出现网站数据设置对话框。

“检查存储页面的较新版本:”应设置为“自动”或“每次访问网页时”

或者,您可以修改代码以从不缓存页面,例如将其添加到您的 PageLoad 事件中:

Response.Expires = -1;

【讨论】:

  • 我的下一个问题是“如果”Never 是 IE 11 安装的默认设置。我还无法验证它。但这是导致此问题的机器上的新安装/升级。时间会证明一切。
  • 我相信默认设置是“自动”
猜你喜欢
  • 2015-10-02
  • 1970-01-01
  • 1970-01-01
  • 2012-05-22
  • 2012-04-20
  • 1970-01-01
  • 2016-01-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多