asp.net-core
La gestion des erreurs
Recherche…
Rediriger vers une page d'erreur personnalisée
ASP.NET Core fournit le middleware de pages de codes d'état , qui prend en charge plusieurs méthodes d'extension différentes, mais nous sommes intéressants dans UseStatusCodePages
et UseStatusCodePagesWithRedirects
:
UseStatusCodePages ajoute un middleware StatusCodePages avec les options données qui vérifient les réponses avec des codes de statut compris entre 400 et 599 sans corps. Exemple d'utilisation pour redirection:
app.UseStatusCodePages(async context => { //context.HttpContext.Response.StatusCode contains the status code // your redirect logic });
UseStatusCodePagesWithRedirects ajoute un middleware StatusCodePages au pipeline. Spécifie que les réponses doivent être gérées en redirigeant avec le modèle d'URL d'emplacement donné. Cela peut inclure un espace réservé '{0}' pour le code d'état. PathBase sera ajouté aux URL commençant par '~', où toute autre URL sera utilisée telle quelle. Par exemple, les éléments suivants seront redirigés vers ~ / errors / <code_erreur> (par exemple ~ / errors / 403 pour erreur 403):
app.UseStatusCodePagesWithRedirects("~/errors/{0}");
Gestion des exceptions globales dans ASP.NET Core
UseExceptionHandler peut être utilisé pour gérer les exceptions globalement. Vous pouvez obtenir tous les détails de l'objet d'exception, comme Stack Trace, Inner exception et autres. Et puis vous pouvez les montrer à l'écran. Vous pouvez facilement mettre en œuvre comme ça.
app.UseExceptionHandler(
options => {
options.Run(
async context =>
{
context.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
context.Response.ContentType = "text/html";
var ex = context.Features.Get<IExceptionHandlerFeature>();
if (ex != null)
{
var err = $"<h1>Error: {ex.Error.Message}</h1>{ex.Error.StackTrace }";
await context.Response.WriteAsync(err).ConfigureAwait(false);
}
});
}
);
Vous devez mettre cela dans configure () du fichier startup.cs.