防止 Kestrel 记录在 ExceptionFilter 中处理的错误

Prevent Kestrel from logging errors that are handled in ExceptionFilter

我使用异常过滤器在我的 ASP.NET 核心应用程序中记录异常,如下所示:

public void OnException(ExceptionContext context)
{
    var request = context.HttpContext.Request;
    var resource = $"{request?.Method}: {request?.Path}{request?.QueryString}";

    var logger = context.HttpContext.RequestServices.GetService<ILogger<ExceptionFilter>>();
    logger.LogError(0, context.Exception, $"Error in SB.API - {resource}");           
}

这很好用,但 Kestrel 也记录了这个事件,给我一个重复的条目。

当我像这样手动记录错误时,如何防止此错误进一步传播?

我不想完全关闭它,因为这样我可能会错过管道其他部分发生的错误。

设置context.ExceptionHandled = true;,然后 Kestrel 就会知道您处理了它并且不会记录它。