当主管和其他人使用的工作场所系统的选项卡关闭时,我一直试图从会话中彻底休息。当此人注销时,我就成功了-一切都被清除了。但是,当一个选项卡关闭时,它可以随意重新打开,就好像从未调用过 session.clear() 一样。
我正在使用这个 javascript:
$.ajax({
type: "POST",
url: "default.aspx/EndSession",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) { }
});
调用此 Web 方法:
[WebMethod]
public static string EndSession()
{
HttpContext.Current.Session.Clear();
HttpContext.Current.Session.Abandon();
HttpContext.Current.User = null;
FormsAuthentication.SignOut();
return "";
}
我设置了一个断点并观察代码在我单步执行并返回时执行。选项卡关闭,然后我右键单击并选择“重新打开关闭的选项卡”,页面返回并且会话仍然处于活动状态。
我在这里看到ppl 说这是不可能的,但不明白为什么,因为代码正在服务器上运行 - 我正在看着它运行,并且会话没有被清除。我原以为这是对“Session.Clear()”和“Session.Abandon()”的显式调用。注销 Page_Load 中的相同代码效果很好。
为什么?我错过了什么?运行后会话清除是否因为选项卡关闭而被抛出?
谢谢!