我考慮將程式中創建的所有例外發送到服務器,但沒有找到好的解決方案。我的想法是創建一個基類,它在建構式中將例外添加到佇列中。發送者確實在佇列中等待并將所有已注冊的例外發送到服務器。但是在注冊例外時,建構式還沒有完成,這意味著當它被發送到服務器時,可能并不是所有的值都被設定。等待一定數量的 ms 是一個很好的解決方案,還是有更好的方法來收集所有例外,這不需要我手動為每個例外/捕獲執行此操作?應該使用什么型別的連接?建立一個 tpc 連接是很昂貴的,我應該實作一個簡單的基于 UDP 的協議,還是太過分了?
uj5u.com熱心網友回復:
您可以查看 Jason Taylor 關于如何執行此操作的文章。這是他的github源代碼鏈接。
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.
}
}
}
啟動.cs:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews(options =>
options.Filters.Add(new ApiExceptionFilter()));
//Bind other services...
}
如果您需要任何幫助,請告訴我。
快樂編碼!
uj5u.com熱心網友回復:
最好使用現有的而不是撰寫自定義錯誤捕獲器。使用 nlog 風格的解決方案使專案更加通用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/473233.html
下一篇:例外命名約定和范圍
