Question

Je l'ai regardé autour de quelques approches à l'utilisation Elmah avec ASP.Net MVC pour que je puisse utiliser la page d'erreur personnalisée pour toutes les exceptions, y compris 404s.

Il est pas manque de questions demander comment obtenir fonctionner correctement le /Shared/Error.aspx dans ASP.Net MVC - avec ou sans Elmah. Je ne l'ai pas eu un problème avec cette tâche, mais je me sens comme si ma solution à l'aide d'une page 404 à côté Elmah était trop simple et je ne peux pas secouer le sentiment qu'il devrait y avoir plus à lui.

Après avoir activé customErrors dans web.config, je créé une nouvelle action dans mon HomeController:

public ActionResult PageNotFound()
{
    return null;
}

A partir de là j'ai ajouté une nouvelle méthode dans mon fichier Global.asax pour tirer profit des capacités de filtrage du journal de Elmah et, après avoir laissé l'exception journalisé, redirigeant la réponse au PageNotFound mentionné ci-dessus ActionResult:

    public void errorLog_Filtering(object sender, ExceptionFilterEventArgs e)
    {
        if (e.Exception.GetType().Equals(typeof(HttpException)))
        {
            HttpException ex = (HttpException)e.Exception;
            if (ex.GetHttpCode() == 404)
                Response.Redirect("/Home/PageNotFound");
        }
    }

Suis-je sur quelque chose qui vient avec MVC par défaut (parce que je trouve toujours mon chemin pour beaucoup de choses concernant MVC), ou overthinking le problème où une solution simple existe? Apprécier toute entrée.

Était-ce utile?

La solution

Je suis sûr que ASP.NET peut gérer ce genre de choses pour vous, vous ne devez pas nécessairement appeler quoi que ce soit pour rediriger vers votre action 404 dans votre global.asax. Voir ci-dessous pour un exemple.

<configuration>
    <system.web>
        <customErrors mode="On">
            <error statusCode="404" redirect="/servererrors/404.aspx" />
        </customErrors>
    </system.web>
</configuration>

http://www.xefteri.com/articles/show.cfm ? id = 11

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top