Heim > Backend-Entwicklung > C++ > Wie kann ich Ausnahmen von allen Filtern, einschließlich Autorisierungsfiltern, in ASP.NET Core-Web-APIs behandeln?

Wie kann ich Ausnahmen von allen Filtern, einschließlich Autorisierungsfiltern, in ASP.NET Core-Web-APIs behandeln?

DDD
Freigeben: 2025-01-18 20:46:16
Original
457 Leute haben es durchsucht

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

ASP.NET Core Web API-Ausnahmebehandlung: Die Einschränkungen von Filtern verstehen

In der ASP.NET Core-Web-API unterscheidet sich die Ausnahmebehandlung erheblich von der herkömmlichen ASP.NET-Web-API. Obwohl Ausnahmebehandlungsfilter verwendet werden können, unterliegen sie bestimmten Einschränkungen.

Im bereitgestellten Beispiel kann ErrorHandlingFilter die Ausnahme in AuthorizationFilter nicht abfangen. Dies liegt daran, dass Filter nacheinander ausgeführt werden und jeder Filter für die Behandlung seiner eigenen Ausnahmen verantwortlich ist. Wenn in einem vorherigen Filter eine Ausnahme ausgelöst wird, wird die Ausführung nachfolgender Filter unterbrochen.

Ausnahmen für alle Filter behandeln

Um Ausnahmen für alle Filter, einschließlich Anwendungsausnahmen, zu behandeln, können Sie die IExceptionHandler-Schnittstelle nutzen. So geht's:

<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>
Nach dem Login kopieren

Middleware-Registrierung:

Registrieren Sie sich wie folgt MyExceptionHandler Middleware:

<code class="language-csharp">builder.Services.AddExceptionHandler<MyExceptionHandler>();
app.UseExceptionHandler(_ => { });</code>
Nach dem Login kopieren

Diese Middleware fängt alle Ausnahmen ab und behandelt sie, auch solche von Filtern.

Wichtige Punkte:

  • IExceptionHandler Die Implementierung kann Aufrufe in der Reihenfolge der Registrierung verketten.
  • Geben Sie TryHandleAsync von true zurück, wenn die Ausnahme behandelt wurde. Andernfalls geben Sie false zurück, um die Ausnahme an den nächsten Handler zu übergeben.

Das obige ist der detaillierte Inhalt vonWie kann ich Ausnahmen von allen Filtern, einschließlich Autorisierungsfiltern, in ASP.NET Core-Web-APIs behandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage