次の方法で共有


IExceptionHandler.TryHandleAsync が true を返すと、例外診断は抑制されます

ASP.NET Core 例外ハンドラー ミドルウェアは、既定で IExceptionHandler によって処理される例外の診断を記録しなくなりました。

導入されたバージョン

.NET 10 Preview 7

以前の動作

以前は、例外ハンドラー ミドルウェアは、 IExceptionHandlerによって処理される例外に関する診断を記録していました。

例外診断は次のとおりです。

  • UnhandledExceptionILoggerにログ記録中。
  • Microsoft.AspNetCore.Diagnostics.HandledExceptionMicrosoft.Extensions.Logging.EventSource イベントを書き込む。
  • error.type メトリックにhttp.server.request.duration タグを追加します。

新しい動作

.NET 10 以降では、 IExceptionHandler.TryHandleAsynctrueを返した場合、例外診断は既定で記録されなくなります。

破壊的変更の種類

この変更は 動作の変更です。

変更の理由

ASP.NET Core ユーザーは、以前の動作が望ましくないというフィードバックを受けています。 IExceptionHandler実装によって例外が処理されたことが報告されましたが、エラー処理ミドルウェアはアプリのテレメトリにエラーを記録しています。

ASP.NET Core は、 IExceptionHandler が例外を処理するときに診断を抑制することで、ユーザーが期待する動作に従うようになりました。 必要に応じて、例外診断の動作をカスタマイズするための構成オプションも使用できます。

処理された例外でテレメトリを記録し続ける場合は、新しい ExceptionHandlerOptions.SuppressDiagnosticsCallback オプションを使用できます。

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

コールバックに渡される context には、例外、要求、および例外が処理されたかどうかに関する情報が含まれます。 コールバックは、診断を抑制してはいけないことを示す false を返し、以前の動作を復元します。

影響を受ける API