Heim  >  Artikel  >  Backend-Entwicklung  >  Wie gehe ich mit Fehlern in der Middleware C# Asp.net Core um?

Wie gehe ich mit Fehlern in der Middleware C# Asp.net Core um?

王林
王林nach vorne
2023-09-02 11:01:12820Durchsuche

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

Erstellen Sie einen neuen Ordner und eine Klasse namens CustomExceptionMiddleware ExceptionMiddleware.cs ist drin.

Als erstes müssen wir den IloggerManager-Dienst registrieren und Implementieren Sie RequestDelegate durch Abhängigkeitsinjektion.

Der _next-Parameter vom Typ RequestDeleagate ist ein Funktionsdelegat, der verarbeitet werden kann Unsere HTTP-Anfrage.

Nach dem Registrierungsprozess müssen wir die InvokeAsync()-Methode erstellen RequestDelegate kann ohne diese Funktion keine Anfragen bearbeiten.

_nächster Delegat sollte die Anfrage und Get-Vorgänge unseres Controllers bearbeiten sollte eine erfolgreiche Antwort generieren. Aber wenn die Anfrage fehlschlägt (und sie schlägt fehl, Da wir eine Ausnahme erzwingen, löst unsere Middleware den Catch-Block aus und ruft HandleExceptionAsync auf Verfahren.

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());
   }
}

Ändern Sie unsere ExceptionMiddlewareExtensions-Klasse mit einer anderen statischen Methode –

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

Verwenden Sie diese Methode in der Konfigurationsmethode der Startup-Klasse –

app.ConfigureCustomExceptionMiddleware();

Das obige ist der detaillierte Inhalt vonWie gehe ich mit Fehlern in der Middleware C# Asp.net Core um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen