6

我有一个带有 .NET 客户端的 SignalR 应用程序。当服务器发生错误时,我需要能够在客户端进行处理。但是,这有点困难,因为 Signalr 总是将所有异常包装到“InvalidOperationException”中,并带有类似“UnknownUserException was throw...”之类的消息,而不是实际给我UnknownUserException.

我不知道该怎么做?

现在不起作用的示例(因为InvalidOperationException抛出而不是实际异常):

try
{
     await this.hubProxy.Invoke<Guid>("Authenticate", nww object[] { userName, languageCode, credentials });
}
catch(UnknownUserException ex)
{
     Toast.Dislay("Invalid UserName.");
}
catch(ConnectionError ex)
{
     Toast.Dislay("Connection Error.");       
}
4

1 回答 1

3

在您的服务器上,您可以启用详细错误:

Routes.RouteTable.MapHubs(new HubConfiguration
{
    EnableDetailedErrors = true
});

请记住,通过这样做,服务器上抛出的错误将传递给客户端,这可能会揭示服务器端实现中的一些意外漏洞(仅供参考)。

于 2013-07-30T17:38:44.243 回答