Buat folder baharu dan kelas yang dipanggil CustomExceptionMiddleware ExceptionMiddleware.cs ada di dalam.
Perkara pertama yang perlu kita lakukan ialah mendaftarkan perkhidmatan IloggerManager dan Laksanakan RequestDelegate melalui suntikan kebergantungan.
Parameter _next jenis RequestDeleagate ialah perwakilan fungsi yang boleh diproses Permintaan HTTP kami.
Selepas proses pendaftaran, kita perlu mencipta kaedah InvokeAsync() RequestDelegate tidak boleh mengendalikan permintaan tanpanya.
_wakil seterusnya hendaklah mengendalikan permintaan pengawal kami dan Dapatkan operasi harus menghasilkan respons yang berjaya. Tetapi jika permintaan itu gagal (dan ia gagal, Memandangkan kami memaksa pengecualian),
middleware kami akan mencetuskan blok tangkapan dan memanggil HandleExceptionAsync kaedah.
public class ExceptionMiddleware{ private readonly RequestDelegate _next; private readonly ILoggerManager _logger; public ExceptionMiddleware(RequestDelegate next, ILoggerManager logger){ _logger = logger; _next = next; } public async Task InvokeAsync(HttpContext httpContext){ try{ await _next(httpContext); } catch (Exception ex){ _logger.LogError($"Something went wrong: {ex}"); await HandleExceptionAsync(httpContext, ex); } } private Task HandleExceptionAsync(HttpContext context, Exception exception){ context.Response.ContentType = "application/json"; context.Response.StatusCode = (int)HttpStatusCode.InternalServerError; return context.Response.WriteAsync(new ErrorDetails(){ StatusCode = context.Response.StatusCode, Message = "Internal Server Error from the custom middleware." }.ToString()); } }
Ubah suai kelas ExceptionMiddlewareExtensions kami dengan kaedah statik lain −
public static void ConfigureCustomExceptionMiddleware(this IApplicationBuilder app){ app.UseMiddleware<ExceptionMiddleware>(); }
Gunakan kaedah ini dalam kaedah konfigurasi kelas Startup -
app.ConfigureCustomExceptionMiddleware();
Atas ialah kandungan terperinci Bagaimana untuk mengendalikan ralat dalam middleware C# Asp.net Core?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!