SignalR上的处理逻辑错误集线器请求最佳实践



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

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

客户端是.Net Core和Blazor。

建议?

SignalR是异步的如果服务上发生逻辑错误,处理该错误的最佳做法是什么?

ASP.NET Core SignalR提供了内置的诊断日志记录功能,可以帮助捕获和记录有用的传输和集线器相关信息,从而帮助解决问题。

此外,从这个文档中,我们可以找到:

异常通常包含敏感信息,例如连接信息。因此,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);
} 

最新更新