ASP.NETコアWeb APIでの包括的な例外処理
この記事では、ASP.NETコアWeb API内の認証フィルターを含むすべてのフィルターから発信されるすべてのフィルターから生じる例外を確実に処理するという課題について説明します。 ASP.NETコアとクラシックASP.NET Web APIでの例外処理の違いは重要であり、多くの場合、開発者が移行を行うことに混乱を引き起こします。
。従来の例外フィルターの制限に対処する
ASP.NETコアの例外フィルターはアクションの例外を処理できますが、歴史的に認証フィルターなどの他のフィルター内にスローされた例外をキャプチャするのに苦労していました。この制限には、より堅牢なアプローチが必要です。
iExceptionHandlerソリューション(ASP.NETコア8以降)
asp.netコア8以降のバージョンは、 iexceptionhandler
インターフェイスを導入し、強力で柔軟なソリューションを提供します。 iexceptionhandler
は:
IExceptionHandlerの実装:
iexceptionhandler
実装: using Microsoft.AspNetCore.Diagnostics;
public class MyExceptionHandler : IExceptionHandler
{
public async ValueTask TryHandleAsync(HttpContext context, Exception exception, CancellationToken cancellationToken)
{
// Implement your exception handling logic here. This could include logging,
// returning a custom error response, etc.
return true; // Return true to indicate the exception was handled.
}
}
builder.Services.AddExceptionHandler();
app.UseExceptionHandler(_ => { });
重要な考慮事項:
iexceptionhandler
実装を登録できます。 それらは登録の順に順次実行されます。 true
from tryhandLeasync
は例外が処理されていることを示しています。 a false
return値は、その後のハンドラーに例外を渡します。この方法は、以前のアプローチの制限に対処し、ASP.NETコアWeb API全体で包括的な例外処理を保証します。
。免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3