Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mengendalikan Pengecualian daripada Semua Penapis, Termasuk Penapis Kebenaran, dalam API Web Teras ASP.NET?

Bagaimanakah Saya Boleh Mengendalikan Pengecualian daripada Semua Penapis, Termasuk Penapis Kebenaran, dalam API Web Teras ASP.NET?

DDD
Lepaskan: 2025-01-18 20:46:16
asal
411 orang telah melayarinya

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

Pengendalian Pengecualian API Web Teras ASP.NET: Memahami Had Penapis

Dalam API Web Teras ASP.NET, pengendalian pengecualian adalah jauh berbeza daripada API Web ASP.NET tradisional. Walaupun penapis pengendalian pengecualian boleh digunakan, ia mempunyai had tertentu.

Dalam contoh yang disediakan, ErrorHandlingFilter tidak dapat menangkap pengecualian dalam AuthorizationFilter. Ini kerana penapis dilaksanakan secara berurutan, dan setiap penapis bertanggungjawab untuk mengendalikan pengecualiannya sendiri. Jika pengecualian dilemparkan dalam penapis sebelumnya, ia akan mengganggu pelaksanaan penapis berikutnya.

Kendalikan pengecualian untuk semua penapis

Untuk mengendalikan pengecualian bagi semua penapis, termasuk pengecualian aplikasi, anda boleh memanfaatkan antara muka IExceptionHandler. Begini cara melakukannya:

<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>
Salin selepas log masuk

Pendaftaran perisian tengah:

Daftar seperti berikut MyExceptionHandler Middleware:

<code class="language-csharp">builder.Services.AddExceptionHandler<MyExceptionHandler>();
app.UseExceptionHandler(_ => { });</code>
Salin selepas log masuk

Perisian tengah ini akan menangkap dan mengendalikan semua pengecualian, termasuk pengecualian daripada penapis.

Isi penting:

  • IExceptionHandler Pelaksanaan boleh membuat panggilan berantai mengikut urutan pendaftaran.
  • Kembali TryHandleAsync daripada true jika pengecualian dikendalikan jika tidak, kembalikan false untuk menyerahkan pengecualian kepada pengendali seterusnya.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengendalikan Pengecualian daripada Semua Penapis, Termasuk Penapis Kebenaran, dalam API Web Teras ASP.NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan