我正在将项目从SignalR升级到SignalR Core,并遇到以下问题。我看不到.NET客户端快速检测到它已与服务器断开连接的方法。当Web服务回收其应用程序池时,会发生这种情况。 .NET Core客户端通过HubConnection.Closed
事件检测到该错误需要90秒。
在原始SignalR中,这是通过诸如HubConnection.ConnectionSlow
,HubConnection.Reconnecting
或HubConnection.StateChanged
之类的许多事件而瞬时发生的。
在最新的稳定SignalR Core 1.0.1版中没有看到这些事件。我尝试监视HubConnection.State
属性中的更改,但这似乎反映了HubConnection.Closed
事件,并且还需要90秒来更新。
建议使用哪些变通办法来更快地检测连接的变化?我需要实现自己的保持活动消息传递系统吗?
答案 0 :(得分:0)
最后,问题出在app_pool回收操作上,这花费了90秒来关闭旧的app_pool。这意味着SignalR连接在此期间确实处于活动状态,这就是客户端无法检测到断开连接的原因。一种快速的解决方法是将以下设置从默认的90秒更改为更低的超时(在我的情况下为30秒):
[application pool] > Right Click > Advanced Settings > Shutdown Time Limit (seconds) > 30