在 C# 中将所有异常发送到服务器

Send all Exceptions to Server in C#

我想过将程序中产生的所有异常发送到服务器,但没有找到好的解决方案。我的想法是创建一个基础 class,它在构造函数中将异常添加到队列中。发件人确实在队列中等待并将所有已注册的异常发送到服务器。 但是在注册异常时,构造函数尚未完成,这意味着在将其发送到服务器时可能并非所有值都已设置。等待一定数量的 ms 是一个好的解决方案,还是有更好的方法来收集所有异常,不需要我为每个 exception/catch 手动执行? 应该使用什么类型的连接?建立一个 tpc 连接是昂贵的,我应该实现一个简单的基于 UDP 的协议,还是太过分了?

最好使用现有的而不是编写自定义错误捕获器。使用 nlog 风格的解决方案使项目更加通用。

您可以查看 Jason Taylor 撰写的有关如何执行此操作的文章。这是他的 github 源代码 link.

https://github.com/jasontaylordev/CleanArchitecture/blob/main/src/WebUI/Filters/ApiExceptionFilterAttribute.cs

我也为你写了一个简化的例子。希望这有帮助。

异常过滤器:

using Microsoft.AspNetCore.Mvc.Filters;

namespace Multitrust.API.Filters
{
public class ApiExceptionFilter : ExceptionFilterAttribute
{
    public ApiExceptionFilter() 
    {
    }


public override void OnException(ExceptionContext context)
{

    HandleException(context);
}

private void HandleException(ExceptionContext context)
{
    //This will catch all exceptions, you can them log them here. I recommend using serilog. 
}

}
}

Startup.cs:

public void ConfigureServices(IServiceCollection services)
{

    services.AddControllersWithViews(options =>
        options.Filters.Add(new ApiExceptionFilter()));
        
  //Bind other services...

 }

如果您需要任何帮助,请告诉我。

编码愉快!