SignalR未触发OnDisconnected

时间:2017-09-15 09:06:55

标签: c# asp.net signalr

问题: SignalR未在我的网络服务器上触发OnDisconnected。这很简单,但没有开火。我试过了:

  • 关闭浏览器窗口
  • 导航
  • 重新加载
  • 从客户端点击SignalR连接上的停止()。
public override Task OnDisconnected(bool stopCalled) {
    LogUtil.LogInfo("Disconn");
    return base.OnDisconnected(stopCalled);
}

我正在使用SignalR 2.2.0.0并且OnConnected工作得很好。
我已经尝试过在最后一次客户端调用时做的建议,以确保连接已启动并运行。
我搜索了所有论坛,SO,GIT等等,没有解决我的问题。

3 个答案:

答案 0 :(得分:0)

我还遇到了登录OnDisconnect时无法正常工作的问题。像您一样,我发现没有调用OnDisconnect方法。

但事实证明,我假设HttpContext.Current可用。 (我的记录器使用它来从会话中获取一些状态信息。)当您考虑它时,期望当前上下文没有任何意义。毕竟,您正在断开连接! HttpContext.Current抛出了一个空指针异常,但我看不到它。

一旦删除了对HttpContext的依赖关系,当前,我就能够记录断开连接并发送警报电子邮件的情况。

答案 1 :(得分:0)

就我而言,我至少需要一个chat.client.broadcast方法才能使其正常工作...否则,它将触发除OnDisconnected方法之外的任何其他事件。

答案 2 :(得分:0)

就我而言,我有一个仅用于调用服务器方法的集线器。

当我将javascript代理客户端订阅到至少一个服务器中心事件时,OnDisconnected方法开始触发。

hubProxy.on('myEvent', myHandler);