Rumah > pembangunan bahagian belakang > Tutorial C#.Net > Bagaimana untuk mengendalikan ralat dalam middleware C# Asp.net Core?

Bagaimana untuk mengendalikan ralat dalam middleware C# Asp.net Core?

王林
Lepaskan: 2023-09-02 11:01:12
ke hadapan
864 orang telah melayarinya

如何处理中间件 C# Asp.net Core 中的错误?

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());
   }
}
Salin selepas log masuk

Ubah suai kelas ExceptionMiddlewareExtensions kami dengan kaedah statik lain −

public static void ConfigureCustomExceptionMiddleware(this IApplicationBuilder
app){
   app.UseMiddleware<ExceptionMiddleware>();
}
Salin selepas log masuk

Gunakan kaedah ini dalam kaedah konfigurasi kelas Startup -

app.ConfigureCustomExceptionMiddleware();
Salin selepas log masuk

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!

sumber:tutorialspoint.com
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