.NET SignalR客户端崩溃

时间:2017-05-03 11:04:12

标签: c# wpf signalr.client .net-4.6

我有一个自我托管的Katana OWIN服务,带有Windows身份验证(无https),可以发布SignalR中心。一切都是最新的NuGet级别,net4.6.2。集线器正在从NLog发布日志事件。

我需要从WPF客户端访问此集线器。为了确保,我还有一个简单的javascript客户端,它根据需要获取消息。但是c#客户端"崩溃"。

在不可预测的时间点,我在输出窗口中看到了这一点:

Exception thrown: 'System.InvalidOperationException' in System.dll
Exception thrown: 'System.InvalidOperationException' in System.dll 
Exception thrown: 'System.ObjectDisposedException' in System.dll 
Exception thrown: 'System.ObjectDisposedException' in System.dll 
Exception thrown: 'System.ObjectDisposedException' in mscorlib.dll

从那时起On事件就不再被触发,即使之前没有一条消息到达:

        public static async Task<bool> ConnectAsync()
        {
            var settings = new Properties.Settings();

            Connection = new HubConnection(settings.WebAPI);
            Connection.Credentials = CredentialCache.DefaultNetworkCredentials;

            HubProxy = Connection.CreateHubProxy("NLogHub");
            HubProxy.On<DTO.WebApi.List.Log>("logEvent", (logEvent) => {
                Debug.WriteLine(logEvent.TimeStamp);
                //LogEventArrived?.Invoke(logEvent);
                });
            try
            {
                ServicePointManager.DefaultConnectionLimit = 10;
                await Connection.Start(new LongPollingTransport());
                Connection.EnsureReconnecting();
            }
            catch (HttpRequestException)
            {
                return false;
            }

            return true;
        }

我也试过其他的运输工具,但没有运气。无论On事件中的内容是什么 - 可以完全为空,这仍然会发生。 客户端和服务器现在都在Windows 2016上运行。但是服务器现在是Windows 2012,客户端是Windows 7。

[更新1]

在SignelR客户端代码中的某处抛出/未捕获异常。根据运输情况,这是我能得到的:

LongPollingTransport LongPollingTransport WebSocketTransport WebSocketTransport

添加跟踪后,我有更多细节(WebSocketTransport),但仍然不知道如何处理:

13:48:04.9934736 - b3378218-e7f5-4ab4-89f6-08e6579bc70a - WS: OnMessage({})
13:48:10.1545908 - b3378218-e7f5-4ab4-89f6-08e6579bc70a - OnError(System.TimeoutException: Couldn't reconnect within the configured timeout of 00:00:30, disconnecting.)
13:48:10.1595862 - b3378218-e7f5-4ab4-89f6-08e6579bc70a - Disconnected
Exception thrown: 'System.Net.Sockets.SocketException' in mscorlib.dll
13:48:10.1675878 - b3378218-e7f5-4ab4-89f6-08e6579bc70a - Transport.Dispose(b3378218-e7f5-4ab4-89f6-08e6579bc70a)
Exception thrown: 'System.OperationCanceledException' in mscorlib.dll
13:48:10.2616468 - b3378218-e7f5-4ab4-89f6-08e6579bc70a - Closed
Exception thrown: 'System.OperationCanceledException' in mscorlib.dll
Exception thrown: 'System.OperationCanceledException' in mscorlib.dll
Exception thrown: 'System.OperationCanceledException' in System.dll
Exception thrown: 'System.OperationCanceledException' in mscorlib.dll
Exception thrown: 'System.OperationCanceledException' in mscorlib.dll

正如我之前提到的:JavaScript客户端就像魅力一样。

[更新2]

所有运输工具都抱怨无法重新连接。但没有任何东西指向连接丢失。如何调试?

任何想法都表示赞赏......

0 个答案:

没有答案