以下会话变量清除方法用于注销单击
if {} else if {} else {}
如果我在两个浏览器中打开我的网站并从一个浏览器注销。会话变量没有在第二个浏览器中清除。所以它没有重定向到注销。
上述方法只会清除当前浏览器会话变量吗?删除所有浏览器会话的有效方法是什么?
答案 0 :(得分:2)
通常,当两个浏览器连接到您的网站时,会有两个不同的会话将被实例化。每个会话中的信息独立于所有其他会话。因此,当您删除/清除会话时,只会影响当前会话。
要销毁所有会话,假设您正在使用InProc模式进行会话状态(还有其他模式=> https://msdn.microsoft.com/en-us/library/ms178586(v=vs.140).aspx),您可以通过重新启动应用程序池来销毁所有会话。有some examples on MSDN site。
ServerManager serverManager = new ServerManager();
ApplicationPoolCollection applicationPoolCollection = serverManager.ApplicationPools;
foreach (ApplicationPool applicationPool in applicationPoolCollection)
{
//...
applicationPool.Recycle();
//...
}
// CommitChanges to persist the changes to the ApplicationHost.config.
serverManager.CommitChanges();
P / s:ServerManager类驻留在Microsoft.Web.Administration包中。不应在注销事件中实现此行为。
还可以选择重新启动应用程序池
答案 1 :(得分:0)
嗨,如果你使用的是母版页,那么在页面回页中不使用此代码
var myRevealingModule = (function () {
var privateCounter = 0;
function privateFunction() {
privateCounter++;
}
function publicFunction() {
publicIncrement();
}
function publicIncrement() {
privateFunction();
}
function publicGetCount(){
return privateCounter;
}
// Reveal public pointers to
// private functions and properties
return {
start: publicFunction,
increment: publicIncrement,
count: publicGetCount
};
})();
myRevealingModule.start();

所以这里会话objuser是你当前的用户会话.. 如果没有使用母版页,那么直接把这个代码放在你的登录中就不是回发。 我已经检查了两个浏览器的工作正常。