Créez un nouveau dossier et une classe appelée CustomExceptionMiddleware ExceptionMiddleware.cs est à l’intérieur.
La première chose que nous devons faire est d'enregistrer le service IloggerManager et Implémentez RequestDelegate via l’injection de dépendances.
Le paramètre _next de type RequestDeleagate est un délégué de fonction qui peut être traité Notre requête HTTP.
Après le processus d'inscription, nous devons créer la méthode InvokeAsync() RequestDelegate ne peut pas gérer les demandes sans cela.
_le prochain délégué doit gérer la demande de notre contrôleur et les opérations Get devrait générer une réponse positive. Mais si la requête échoue (et elle échoue, Puisque nous forçons une exception),
notre middleware déclenchera le bloc catch et appellera HandleExceptionAsync méthode.
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()); } }
Modifiez notre classe ExceptionMiddlewareExtensions avec une autre méthode statique −
public static void ConfigureCustomExceptionMiddleware(this IApplicationBuilder app){ app.UseMiddleware<ExceptionMiddleware>(); }
Utilisez cette méthode dans la méthode de configuration de la classe Startup -
app.ConfigureCustomExceptionMiddleware();
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!