我有一个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。
答案 0 :(得分:0)
由于这是多个用户之间的共享计算机,因此听起来好像页面可能在本地缓存。要求用户尝试进行硬刷新(CTRL+F5
)以确认这一点。然后检查他们的本地设置:
在Internet选项下的IE11中 - >常规标签,在“浏览历史记录”部分下 - >点击“设置”按钮 - >将出现“网站数据设置”对话框。
“检查存储页面的较新版本:”应设置为“自动”或“每次访问网页时”
或者,您可以修改代码以永不缓存页面,例如将其添加到PageLoad
事件中:
Response.Expires = -1;