ASP.NET Core 例外ハンドラー ミドルウェアは、既定で IExceptionHandler によって処理される例外の診断を記録しなくなりました。
導入されたバージョン
.NET 10 Preview 7
以前の動作
以前は、例外ハンドラー ミドルウェアは、 IExceptionHandlerによって処理される例外に関する診断を記録していました。
例外診断は次のとおりです。
-
UnhandledExceptionをILoggerにログ記録中。 -
Microsoft.AspNetCore.Diagnostics.HandledExceptionにMicrosoft.Extensions.Logging.EventSource イベントを書き込む。 -
error.typeメトリックにhttp.server.request.durationタグを追加します。
新しい動作
.NET 10 以降では、 IExceptionHandler.TryHandleAsync が trueを返した場合、例外診断は既定で記録されなくなります。
破壊的変更の種類
この変更は 動作の変更です。
変更の理由
ASP.NET Core ユーザーは、以前の動作が望ましくないというフィードバックを受けています。 IExceptionHandler実装によって例外が処理されたことが報告されましたが、エラー処理ミドルウェアはアプリのテレメトリにエラーを記録しています。
ASP.NET Core は、 IExceptionHandler が例外を処理するときに診断を抑制することで、ユーザーが期待する動作に従うようになりました。 必要に応じて、例外診断の動作をカスタマイズするための構成オプションも使用できます。
推奨されるアクション
処理された例外でテレメトリを記録し続ける場合は、新しい ExceptionHandlerOptions.SuppressDiagnosticsCallback オプションを使用できます。
app.UseExceptionHandler(new ExceptionHandlerOptions
{
SuppressDiagnosticsCallback = context => false;
});
コールバックに渡される context には、例外、要求、および例外が処理されたかどうかに関する情報が含まれます。 コールバックは、診断を抑制してはいけないことを示す false を返し、以前の動作を復元します。
影響を受ける API
.NET