ホームページ > バックエンド開発 > C++ > ASP.NET Core Web API で承認フィルターを含むすべてのフィルターからの例外を処理するにはどうすればよいですか?

ASP.NET Core Web API で承認フィルターを含むすべてのフィルターからの例外を処理するにはどうすればよいですか?

DDD
リリース: 2025-01-18 20:46:16
オリジナル
457 人が閲覧しました

How Can I Handle Exceptions from All Filters, Including Authorization Filters, in ASP.NET Core Web APIs?

ASP.NET Core Web API の例外処理: フィルターの制限について理解する

ASP.NET Core Web API では、例外処理が従来の ASP.NET Web API とは大きく異なります。例外処理フィルターは使用できますが、特定の制限があります。

この例では、ErrorHandlingFilterAuthorizationFilter の例外をキャッチできません。これは、フィルターが順番に実行され、各フィルターが独自の例外を処理する責任があるためです。前のフィルターで例外がスローされた場合、後続のフィルターの実行が中断されます。

すべてのフィルターの例外を処理します

アプリケーション例外を含むすべてのフィルターの例外を処理するには、IExceptionHandler インターフェイスを利用できます。その方法は次のとおりです:

<code class="language-csharp">using Microsoft.AspNetCore.Diagnostics;

class MyExceptionHandler : IExceptionHandler
{
    public async ValueTask<bool> TryHandleAsync(
        HttpContext context, 
        Exception exception,
        CancellationToken cancellation)
    {
        // 异常响应对象
        var error = new { message = exception.Message };
        await context.Response.WriteAsJsonAsync(error, cancellation);
        return true;
    }
}</code>
ログイン後にコピー

ミドルウェア登録:

次のように登録します MyExceptionHandler ミドルウェア:

<code class="language-csharp">builder.Services.AddExceptionHandler<MyExceptionHandler>();
app.UseExceptionHandler(_ => { });</code>
ログイン後にコピー

このミドルウェアは、フィルターからの例外を含むすべての例外をキャッチして処理します。

キーポイント:

  • IExceptionHandler 実装では、登録順に呼び出しを連鎖させることができます。
  • 例外が処理された場合は TryHandleAsync を返し、それ以外の場合は true を返して例外を次のハンドラーに渡します。 false

以上がASP.NET Core Web API で承認フィルターを含むすべてのフィルターからの例外を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート