会话变量在Session.Abandon之后被记住(仅限IE 11)

时间:2014-06-19 19:04:47

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

我有一个asp.net会话,它在应用了Session.Abandon和Session.Contents.RemoveAll之后返回先前保存的数据。注意:这只发生在运行带有IE 11的Windows 7的单台计算机上。会话变量在其他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。

1 个答案:

答案 0 :(得分:0)

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

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

Check for newer versions of stored pages: Automatically, or every time I visit

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

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

Response.Expires = -1;