2010-11-27 5 views
1

J'ai configuré une application MVC pour enregistrer les erreurs avec log4net. Dans mon global.asax, j'attrape les erreurs d'application en utilisant la méthode Application_Error (s_log est mon gestionnaire de journalisation qui est un wrapper autour de Log4net).Comment consigner les erreurs d'application lorsque customErros est activé?

protected void Application_Error(Object sender, EventArgs e) 
{ 
    Exception ex = Server.GetLastError().GetBaseException(); 
    s_log.LogException(true, ex, "Application Error"); 
} 

Lorsque customErrors est réglé sur « Off » Je reçois l'écran jaune de la mort et peut voir l'erreur dans mon fichier journal. Lorsque customErrors est défini sur "On", je vois ma page d'erreur (et l'erreur détaillée) mais rien n'est écrit dans le fichier journal (le débogage n'atteint pas l'erreur Application_Error). Est-ce que quelqu'un peut m'expliquer pourquoi cela se produit?

Error.aspx

<h1>Sorry, an error occurred while processing your request.</h1> 
<strong>Controller: </strong> <%= Model.ControllerName %><br /> 
<strong>Action: </strong> <%= Model.ActionName %> 
<% if (Model.Exception != null) { %> 
<p> 
    <strong>Exception Details:</strong><br /> 
    <%= Model.Exception.ToString() %> 
</p> 
<% } %> 

customErrors section web.config

<customErrors mode="On" defaultRedirect="~/error"> 
    <error statusCode="403" redirect="~/error"/> 
    <error statusCode="404" redirect="~/error"/> 
</customErrors> 

Répondre

1

La fonction customErrors est en train de prendre soin d'elle avant de la boîte méthode Application_Error. Vous devez simplement désactiver customErrors et utiliser la redirection de réponse de mvc pour envoyer les utilisateurs à la page d'erreur appropriée.

Voir ASP.NET MVC Custom Error Handling Application_Error Global.asax?

Questions connexes