C# 如何获取web应用程序中活动会话的列表?
我正在尝试获取web应用程序中活动会话id的列表 我试图在Global.asax中管理一个列表。 我在启动会话时添加会话id,在启动会话时删除会话id 问题出现在用户关闭浏览器或关闭计算机的情况下。 会话结束未激发,并且该会话仍存在于列表中 有人知道我怎么才能拿到名单 谢谢 这个问题没有解决方案可以避免您所注意到的复杂性。除非有明确的方法来结束用户的会话(并且用户激活了它),否则知道会话何时结束的唯一方法就是允许它过期 会话超时时,会话_End最终将触发。只有当应用程序域本身意外退出时,才会看到调用会话结束。在这种情况下,您知道您的所有会话都已停止。这个问题没有解决方案可以避免您注意到的复杂性。除非有明确的方法来结束用户的会话(并且用户激活了它),否则知道会话何时结束的唯一方法就是允许它过期C# 如何获取web应用程序中活动会话的列表?,c#,asp.net,session,global-asax,C#,Asp.net,Session,Global Asax,我正在尝试获取web应用程序中活动会话id的列表 我试图在Global.asax中管理一个列表。 我在启动会话时添加会话id,在启动会话时删除会话id 问题出现在用户关闭浏览器或关闭计算机的情况下。 会话结束未激发,并且该会话仍存在于列表中 有人知道我怎么才能拿到名单 谢谢 这个问题没有解决方案可以避免您所注意到的复杂性。除非有明确的方法来结束用户的会话(并且用户激活了它),否则知道会话何时结束的唯一方法就是允许它过期 会话超时时,会话_End最终将触发。只有当应用程序域本身意外退出时,才会看到
会话超时时,会话_End最终将触发。只有当应用程序域本身意外退出时,才会看到调用会话结束。在这种情况下,您知道您的所有会话都已死亡。如果您使用SQL Server数据库存储会话,则通过使用SQL查询获取所需内容,可以更轻松地检索当前处于活动状态的会话 我说出现是因为和其他人一样,如果没有使用会话正确清除会话,会话可能会挂起。放弃,例如,如果用户只是关闭浏览器窗口而没有注销。这意味着您只能依靠会话的到期日期来确保会话完全结束,不管您设置了多长时间
我还应该指出,如果使用数据库作为会话存储,会话结束事件将永远不会触发。如果使用SQL Server数据库存储会话,则通过使用SQL查询获取所需内容,可以更轻松地检索当前活动的内容 我说出现是因为和其他人一样,如果没有使用会话正确清除会话,会话可能会挂起。放弃,例如,如果用户只是关闭浏览器窗口而没有注销。这意味着您只能依靠会话的到期日期来确保会话完全结束,不管您设置了多长时间
我还应该指出,如果使用数据库作为会话存储,会话结束事件将永远不会触发。Andrew Barber是正确的。你还可以做一件事: 请您的用户注销。事实上,不仅仅是问他们,而是在某种程度上强迫/提醒他们必须注销。 我是这样做的:
<script type="text/javascript">
$(function () {
$("a").click(function () {
window.onbeforeunload = null;
});
});
</script>
<script type="text/javascript">
window.onbeforeunload = confirmExit;
function preConfirm() {
if ((window.event.clientX < 0) || (window.event.clientY < 0)) {
confirmExit();
}
}
function confirmExit() {
return "You have attempted to leave this page. It is suggested to log out using the link. Are you sure you want to exit this page?";
}
</script>
通过将这些脚本添加到母版页(如果是这种情况),或者在每个页面中,如果用户尝试加载另一个页面或在不注销的情况下关闭浏览器,浏览器都会提示用户一个带有消息的模式窗口
当然,即使你提醒我的用户注销,我的用户还是决定离开该页面,但实际上你已经尽力了 安德鲁·巴伯是对的。你还可以做一件事: 请您的用户注销。事实上,不仅仅是问他们,而是在某种程度上强迫/提醒他们必须注销。 我是这样做的:
<script type="text/javascript">
$(function () {
$("a").click(function () {
window.onbeforeunload = null;
});
});
</script>
<script type="text/javascript">
window.onbeforeunload = confirmExit;
function preConfirm() {
if ((window.event.clientX < 0) || (window.event.clientY < 0)) {
confirmExit();
}
}
function confirmExit() {
return "You have attempted to leave this page. It is suggested to log out using the link. Are you sure you want to exit this page?";
}
</script>
通过将这些脚本添加到母版页(如果是这种情况),或者在每个页面中,如果用户尝试加载另一个页面或在不注销的情况下关闭浏览器,浏览器都会提示用户一个带有消息的模式窗口
当然,即使你提醒我的用户注销,我的用户还是决定离开该页面,但实际上你已经尽力了 M4N的可能重复-我看到了这篇文章,但其中建议的解决方案并不能解决我的问题-用户可以关闭浏览器,但会话仍然有效。无论如何,谢谢:@Inbal这是因为没有解决方案。M4N可能重复-我看到了这篇文章,但其中建议的解决方案并不能解决我的问题-用户可以关闭浏览器,但会话仍然有效。无论如何,谢谢:@Inbal这是因为没有解决方案。