我想知道当用户在 ASP.NET 中离开页面时,是否有任何方法可以始终运行一些服务器端代码。页面 Unload 事件不好,因为如果有人单击链接,则不会调用该事件。理想情况下,即使用户关闭浏览器,我也希望代码能够运行。
我怀疑我问的是不可能的,但问也无妨
im not really sure if you can do that but i have a workaround in mind. There is an event in the DOM called onbeforeunload. it get calls everytime a user leaves a page. you can try sending an ajax request to the server from this function.
问题是,HTTP 是一个无状态协议,所以当页面完成服务时,你不会知道用户是否还在页面上。
实现这一点的唯一方法是使用隐藏的 Javascript 片段不断地使用其会话 ID 或其他类似机制 ping 服务器。当 ping 变得无响应时,您可以合理地假设该页面不再被用户查看。
这是一个解释传统 HTTP 消息流的图表。
在不创建过于混乱的解决方案的情况下,最接近的方法是启用 ASP 会话。这将为每个访问者在服务器上创建一个会话,访问者将通过 cookie 进行识别。
在访问者不活动一定程度后,会话将关闭,并引发 SessionEnd 事件。这可以在 Global.asax 文件中连接。
但是我不会推荐这个,因为 HTTP 是公关的。定义一个无会话协议,使用基于服务器的会话违反了这一事实,并且通常是有问题的。当用户使用浏览器返回按钮并重新提交表单时,许多使用基于服务器的会话的解决方案都会遇到问题。因为提交表单的内容不再对应服务器会话中存在的数据。
此外,启用基于服务器的会话会严重损害应用程序的可伸缩性。
从来没听说过。为此,您需要使用 javascript,并在服务器端调用 Web 服务。