网络/系统崩溃时单用户登录

时间:2013-04-30 11:31:48

标签: c# asp.net signalr

我希望在我的网站上有单个用户登录,即用户无法同时使用来自不同地方的一个用户ID和密码登录。

可以通过在数据库中维护一个标志并在用户注销和登录时更改它来完成它,但是如果用户没有按下注销按钮又如何:

  1. 关闭浏览器(此处我可以通过window.unload事件更改数据库标记)
  2. 网络崩溃(真正的问题在这里)。
  3. 有人可以建议如何处理与系统/网络相关的问题吗?我不想使用session.end(),因为有时它会在默认超时(~20分钟)后触发。

    我可以使用signalR创建服务器计时器来监控用户是否还活着吗?

1 个答案:

答案 0 :(得分:1)

SignalR将遭受服务器崩溃的困扰。 SignalR尽力确保在关闭之前触发事件,但有时服务器死机会导致数据库中存在无效条目。

https://jabbr.net/使用的方法是在服务器启动时记录每个用户。因此,每当SignalR服务器启动时:在数据库上运行清理。在所有其他情况下,您可以依靠SignalR来适当地跟踪您的用户。

要解决#1:SignalR实际上会在卸载时向服务器发送一个中止命令,但是如果由于某种原因没有发送该命令,服务器仍会使连接超时并最终触发集线器上的OnDisconnected。