Affichage de la page CSHTML d'erreur personnalisée dans MVC5 sur 404/500 / une exception?


SB2055

Je me suis arraché les cheveux toute la journée. J'essaie simplement d'afficher une page cshtml conviviale chaque fois qu'une exception est levée pour que mon UX soit cohérent - je ne veux même pas que mes utilisateurs sachent que je suis sur la pile .net depuis l'interface utilisateur, jamais.

Je teste en naviguant vers localhost:2922/junkurl, - si l'URL ne résout pas, ne peut pas être trouvée ou génère une exception, je souhaite afficher une page cshtml rendue conviviale.

Ce que j'ai dans mon web.config:

<customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="~/Views/Shared/Error.cshtml">
</customErrors>

Cela entraîne la page d'erreur jaune par défaut. Mais si je laisse tomber une error.htmlpage à la racine et que j'utilise ceci:

<customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="~/error.html">
</customErrors>

Ça marche. Le seul problème est que je ne veux pas avoir à reconstituer tout mon Layout / LoginPartial / etc avec du html simple - je veux le rendre à l'aide de rasoir. Quelle est l'approche typique à ce sujet? J'ai fait des tonnes de recherches à ce sujet, alors excuses si j'ai raté la réponse, je suis complètement perdu.

Je préfère le faire à partir du code si possible, mais d'après ce que je comprends, le code ne couvrira qu'un certain niveau d'exceptions ... à un certain moment, il semble qu'il doit être géré via config. Je souhaite juste que ce soit une configuration simple!

Sam

Essayez avec un ErrorController et la configuration suivante dans votre web.config

web.config

<customErrors mode="On" defaultRedirect="~/Error">
  <error redirect="~/Error/NotFound" statusCode="404" />
  <error redirect="~/Error/InternalServer" statusCode="500" />
</customErrors>

ErrorController

public class ErrorController : Controller
{
    public ActionResult Index()
    {
        return View("Error");
    }

    public ActionResult NotFound()
    {
        Response.StatusCode = 200;
        return View("NotFound");
    }

    public ActionResult InternalServer()
    {
        Response.StatusCode = 200;
        return View("InternalServer");
    }
}

Articles connexes


Affichage d'une erreur de connexion PHP sur la même page?

fidtal J'ai deux pages. Index.php et mon Login.php. J'utilise le formulaire de menu déroulant pour me connecter - lorsque l'utilisateur appuie sur «Se connecter», les données sont envoyées à Login.php. Tout va bien lorsque le mot de passe / nom d'utilisateur é

Affichage de l'objet .net de la classe al sur une page .cshtml

Éclat de glace Je suis nouveau sur .NET et j'essaie d'afficher mon json sur ma page .cshtml et je ne sais pas comment y parvenir. Je veux aussi tester ce que cette classe donne car je ne sais pas si cela fonctionnera car je reçois le json de mon backend localh

Affichage de la page d'erreur personnalisée au démarrage

Ashilon Existe-t-il un moyen d'afficher une page d'erreur personnalisée lorsqu'une exception se produit pendant la phase de démarrage d'une application ASP.NET Core? Par exemple, si une exception se produit (db est en panne, etc.) dans l'une des méthodes de la