当 IExceptionHandler.TryHandleAsync 返回 true 时,将禁止异常诊断

ASP.NET Core 异常处理程序中间件不再默认记录由 IExceptionHandler 处理的异常诊断。

已引入的版本

.NET 10 预览版 7

以前的行为

以前,异常处理程序中间件记录了有关 IExceptionHandler 处理的异常的诊断信息。

异常诊断信息为:

新行为

从 .NET 10 开始,如果 IExceptionHandler.TryHandleAsync 返回 true,则默认情况下不再记录异常诊断。

破坏性变更的类型

此更改为行为更改

更改原因

ASP.NET 核心用户已提供反馈,指出以前的行为是不可取的。 其 IExceptionHandler 实现报告了异常已处理,但错误处理中间件仍记录应用遥测中的错误。

ASP.NET Core 现在通过在 IExceptionHandler 处理异常时抑制诊断,来遵循用户预期的行为。 还可以根据需要使用配置选项来自定义异常诊断行为。

如果您希望在处理异常时继续记录遥测数据,可以使用新的 ExceptionHandlerOptions.SuppressDiagnosticsCallback 选项:

app.UseExceptionHandler(new ExceptionHandlerOptions
{
    SuppressDiagnosticsCallback = context => false;
});

context传递给回调的信息包括有关异常、请求以及是否处理异常的信息。 回调返回 false 表示不应抑制诊断,从而恢复以前的行为。

受影响的 API