Browser 如何在asp.net中检测服务器端浏览器关闭?

Browser 如何在asp.net中检测服务器端浏览器关闭?,browser,asp.net-2.0,Browser,Asp.net 2.0,我想知道asp.net 2.0中服务器端的浏览器何时关闭。如何检测代码隐藏?简短回答:您不能直接这样做,因为http是无状态的。也许您可以使用一些AJAX池、会话超时检测和其他技巧 看一看更多的解释和想法。这是基于Java的,但想法与语言无关。首先想到的是挂接卸载事件,然后异步发回浏览器导航离开站点(关闭窗口)。然而,HTTP用于构建无状态web站点的方式使得这不可行。你只是没有一个可靠的方法来跟踪用户连接 请考虑如何处理多个会话?如果同一个站点在多个、多个选项卡或窗口中打开,并关闭除一个以外的

我想知道asp.net 2.0中服务器端的浏览器何时关闭。如何检测代码隐藏?

简短回答:您不能直接这样做,因为http是无状态的。也许您可以使用一些AJAX池、会话超时检测和其他技巧


看一看更多的解释和想法。这是基于Java的,但想法与语言无关。

首先想到的是挂接卸载事件,然后异步发回浏览器导航离开站点(关闭窗口)。然而,HTTP用于构建无状态web站点的方式使得这不可行。你只是没有一个可靠的方法来跟踪用户连接

请考虑如何处理多个会话?如果同一个站点在多个、多个选项卡或窗口中打开,并关闭除一个以外的所有站点,您如何判断我仍然处于连接状态?有趣的是,我的浏览器在两者之间的某个地方崩溃了

问题是,我可以设计一些东西来解决你的问题。然而,它永远不会可靠,因为HTTP没有内置的连接控制机制

我必须回答这个问题,并提出一个后续问题。为什么您需要知道浏览器窗口何时关闭


如果您需要进行一些资源清理,有两个服务器端事件,由ASP.NET提供,您可以更可靠地使用它们。这就是
Session\u End
Application\u End

非常明显的问题是为什么需要这个?您想存储注销时间还是关闭时间?然后最好捕获会话超时。是否要重定向其他页面,然后最好捕获javascript的页面卸载事件。

客户端脚本:

< body onbeforeunload="window.open('http://www.website.com/browserclosed.aspx','mywindow','width=1,height=1');">

我无法回答OP的问题,但这样做的一个常见原因是在用户放弃并关闭浏览器时停止长时间运行的操作(查询、报表生成等)。
// page_load

int userId = Convert.ToInt32(request.session("userId"));
ReportBrowserClosed(userId);
// Do what you want in ReportBrowserclosed() method