我有一个 Silverlight 5 应用程序使用 SignalR 访问服务器。大多数情况下,这可以正常工作,但有时在调试中运行时,我会在协商过程中遇到错误。我在想这可能是因为我的本地 ISS 安装用完了连接。
无论如何,当这种情况发生时,我的应用程序中的未处理异常处理程序会被调用。我想更改它,以便我可以处理 SignalR 初始化的本地异常。我不希望协商错误传播到我的中央错误处理程序。
我有一段代码,如下所示:
var uri = Application.Current.Host.Source.GetComponents(UriComponents.Scheme | UriComponents.HostAndPort, UriFormat.Unescaped);
_hubConnection = new HubConnection(uri);
var hub = _hubConnection.CreateProxy("stuffhub");
hub.On<Stuff>("Stuff", message => DoStuff());
var transport = new LongPollingTransport();
_hubConnection.Start(transport);
这段代码大部分时间都执行得很好,但有时在上面的代码执行几秒钟后,以下异常会被交给我的中央未处理的异常处理程序。
Message: Exception(s) occurred : .
[ Exception(s) occurred : .
[ Exception(s) occurred : .
[ Exception(s) occurred : .
[ System.InvalidOperationException: Server negotiation failed.
vid SignalR.Client.Transports.HttpBasedTransport.<GetNegotiationResponse>b__0(IResponse response)
vid SignalR.TaskAsyncHelper.FromMethod[T1,TResult](Func`2 func, T1 arg) ]
]
]
]
ApplicationUnhandledExceptionEventArgs 的 StackTrace 是:
at System.Threading.Tasks.Task.Finalize()