C# 如何在asp.net中通过SessionId从不同的web应用程序销毁会话?

C# 如何在asp.net中通过SessionId从不同的web应用程序销毁会话?,c#,asp.net,session,webforms,C#,Asp.net,Session,Webforms,如何在网格视图上创建一个名为“Kill Session”的按钮来终止C#asp.net web表单中用户的会话?最简单的答案是让每个请求在任何处理之前检查此类挂起的“会话终止”的持久队列或表,并有条件地放弃会话 快速优化是让应用程序全局侦听(即从appstart)并主动侦听外部队列,以便可以立即将“kill请求”推送到它。然后,您可以在本地线程安全的数据结构中准备它们,以便正常的HTTP请求不会减慢速度 会话管理应用程序只是将消息发送到该队列 旁注:任何“服务总线”通常都可以。这比队列的持久性更

如何在网格视图上创建一个名为“Kill Session”的按钮来终止C#asp.net web表单中用户的会话?

最简单的答案是让每个请求在任何处理之前检查此类挂起的“会话终止”的持久队列或表,并有条件地放弃会话

快速优化是让应用程序全局侦听(即从appstart)并主动侦听外部队列,以便可以立即将“kill请求”推送到它。然后,您可以在本地线程安全的数据结构中准备它们,以便正常的HTTP请求不会减慢速度

会话管理应用程序只是将消息发送到该队列

旁注:任何“服务总线”通常都可以。这比队列的持久性更重要,因为您需要在消息排队时处理围绕应用程序重新启动的场景


正确的答案是直接与实际的会话处理程序通信。我不相信有任何标准API可以满足您的需要,因此这将取决于会话处理程序(可能还取决于主机/服务器)。

在堆栈中,您需要提供您尝试过的示例代码。请提供您一直在尝试的示例代码好吗?我们有一个httpmodule,我们保存了sessionid,我有另一个应用程序列出了所有会话,我们需要根据选择记录终止会话。您不能从其他web应用程序中删除会话值;会话是安全的,只能在特定浏览器会话中访问;这实际上并没有回答这个问题。如何按会话ID销毁会话?@SpencerSullivan:正如我所提到的,如果会话与您在处理以前的请求(或任何其他上下文)时放入的“kill queue”中的会话匹配,则可以销毁会话。当时我似乎暗示没有标准的API可以直接使会话失效;我可能还是错了,明白了。我们所寻找的是真正实现您所建议的这种魔力的实际代码。不是队列部分中的存储ID。从远程进程中实际删除会话。我还没有看到这样做,我相信如果你能证明这一点,你会得到相当高的分数。@SpencerSullivan:当然;我在前面的评论()中链接到了我相信您想要的方法。应该很快就会明白为什么我建议使用异步机制来调用它(它只能放弃当前会话)。如果您只能放弃当前会话,那么按id(非当前)放弃会话的队列是不现实的,并且会使您的答案无效。异步性与这个问题无关。问题是如何放弃不是当前会话(“用户”)的会话?