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);
}
我喜欢 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);
}