c# - 在浏览器关闭时运行服务器端功能

标签 c# asp.net onbeforeunload

背景:我正在使用 C# 代码隐藏创建一个非常简单的类似于聊天室的 ASP.NET 页面。当前用户/聊天消息显示在位于 AJAX 更新面板内的控件中,并使用计时器 - 它们每隔几秒从数据库中提取一次信息。

我正在尝试找到一种简单的方法来处理在用户退出浏览器时将用户状态设置为“离线”,而不是点击“注销”按钮。 IsOnline 的“离线”状态目前仅为 1 个字符 (y/n)。

到目前为止,我已经使用 Javascript 研究了 window.onbeforeunload,在这个事件上设置了一个带有函数的隐藏表单变量 -> 当然,问题是,我仍然需要在我的代码隐藏中测试这个隐藏的表单变量在某个地方进行最终的服务器端数据库查询,有效地将用户设置为离线。

我可能完全混淆了这个可能很简单的问题!当然,如果有任何完全不同的替代建议,我将不胜感激。

谢谢

最佳答案

我怀疑你找错了树。请记住,用户可能会突然失去互联网连接,他们的浏览器可能会崩溃,或者使用红色大开关关闭他们的计算机。在某些情况下,服务器根本再也听不到浏览器的消息。

执行此操作的最佳方法是使用“死人开关”。既然你说过他们每隔几秒就会从数据库中提取信息,那么请利用这个机会存储(在数据库中)你最后一次从给定客户那里听到的时间戳。

每隔一分钟左右,在服务器上执行一次查询以查找几分钟内未轮询的客户端,然后将用户设置为离线...所有这些都在服务器上进行。

关于c# - 在浏览器关闭时运行服务器端功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/531001/

相关文章:

c# - 创建 C# 到 C++ 桥 : Why do I get a AccessViolationException when calling DLL?

c# - 为什么asp :DropDownList does not respond to code-behind

javascript - 如何在返回 "window.onbeforeunload"上的内容之前明显更改 css

c# - 如何在 MVVM 应用程序中将任意 View 动态插入 xaml?

c# - 从 MySQL 数据库中提取一个非平凡的对象

c# - 单击复合控件内的按钮时,Repeater ItemCommand 不会触发

c# - 如何使用 AzCopy 通过 cmd 在 Azure Web 应用服务中工作

c# - 数据源未添加到 ReportViewer

jquery - javascript 中的 window.onbeforeunload

javascript - 如何在IOS设备上离开页面之前将数据保存在本地存储中?