解决SignalR Core中缺少ConnectionSlow,Reconnecting和StateChanged事件的解决方法?

时间:2019-01-25 16:44:01

标签: c# asp.net-core signalr signalr-hub asp.net-core-signalr

我正在将项目从SignalR升级到SignalR Core,并遇到以下问题。我看不到.NET客户端快速检测到它已与服务器断开连接的方法。当Web服务回收其应用程序池时,会发生这种情况。 .NET Core客户端通过HubConnection.Closed事件检测到该错误需要90秒。

在原始SignalR中,这是通过诸如HubConnection.ConnectionSlowHubConnection.ReconnectingHubConnection.StateChanged之类的许多事件而瞬时发生的。

在最新的稳定SignalR Core 1.0.1版中没有看到这些事件。我尝试监视HubConnection.State属性中的更改,但这似乎反映了HubConnection.Closed事件,并且还需要90秒来更新。

建议使用哪些变通办法来更快地检测连接的变化?我需要实现自己的保持活动消息传递系统吗?

1 个答案:

答案 0 :(得分:0)

最后,问题出在app_pool回收操作上,这花费了90秒来关闭旧的app_pool。这意味着SignalR连接在此期间确实处于活动状态,这就是客户端无法检测到断开连接的原因。一种快速的解决方法是将以下设置从默认的90秒更改为更低的超时(在我的情况下为30秒):

[application pool] > Right Click > Advanced Settings > Shutdown Time Limit (seconds) > 30