SignalR 上的处理逻辑错误中心请求最佳实践

Handling logic Error hub on SignalR request best practice

我喜欢 SignalR,目前正在用它开发一些应用程序。由于 SignalR 在服务上发生逻辑错误时是异步的,因此处理该错误的最佳做法是什么?

我一直在使用错误对象调用客户端并将其添加到可观察到的 Reactive Extension,但这似乎有点尴尬。

客户端是.Net Core和Blazor。

建议?

SignalR is async if a logic error occurs on the service what is the best practice to handle that error?

ASP.NET 核心 SignalR 提供 built-in diagnostics logging feature 可以帮助捕获和记录有用的传输和集线器相关信息,这可以帮助解决问题。

此外,从this doc中我们可以发现:

异常通常包含敏感信息,例如连接信息。因此,SignalR 不会向客户端公开服务器上发生的异常的详细信息。但是,HubException 的实例会发送到客户端。

如果你想处理Hub方法中出现的逻辑错误,你可以尝试将代码逻辑包裹在try-catch块中,然后在日志中手动写入异常。

或者您可以创建一个新的 HubException 具有指定错误消息的实例,客户端调用此集线器方法将检测到该错误消息。

try
{
    //code logic here
    //...

    //...
    //Convert.ToDateTime("hello");

    await Clients.All.SendAsync("ReceiveMessage", user, message);
}
catch (Exception ex)
{

    throw new HubException(ex.Message);
}