【问题标题】:possible exceptions from IClientProxy.SendAsync (from Microsoft.AspNetCore.SignalR)IClientProxy.SendAsync 的可能异常(来自 Microsoft.AspNetCore.SignalR)
【发布时间】:2020-08-19 18:18:30
【问题描述】:

在 SignalR v2 中,我使用如下代码(如下)来处理连接失败时发生的异常。 SignalR v3 中的等价物是什么?如果连接失败或序列化失败,SendAsyncSendAsyncCore 是否会抛出异常?

private async void ManagerOnUserRemoved(UserDto userDto)
{
    try
    {
        await Context.Clients.All.MyFunc(userDto);
    }
    catch (InvalidOperationException) { }
    catch (AggregateException) { }
}

我没有看到这里列出的任何异常:https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.signalr.client.hubconnectionextensions.sendasync?view=aspnetcore-3.0

更新:我对来自客户端的呼叫(到InvokeCoreAsync 等)有同样的问题。

【问题讨论】:

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


    【解决方案1】:

    在 SignalR V3 中,使用HubException 来捕获包含敏感信息(例如连接信息)的异常。

    https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.signalr.hubexception?view=aspnetcore-3.1

    【讨论】:

      【解决方案2】:
      private async void ManagerOnUserRemoved(UserDto userDto)
      {
          try
          {
              await Context.Clients.All.MyFunc(userDto);
          }
          catch(Exception ex) { 
      //Now check exceptions what you want by exception message or exception code
          }
      }
      

      使用此代码,您可以处理所有异常,或者您可以这样做:

       hubConnection.Error += ex => Console.WriteLine("Error: {0}", ex.Message);
      

      我觉得会有帮助

      【讨论】:

        猜你喜欢
        • 2017-09-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-26
        相关资源
        最近更新 更多