2012-08-24 5 views
9

Wenn benutzerdefinierte Fehler in der Webkonfiguration auf RemoteOnly gesetzt sind - bedeutet das, dass MVCs Anwendungsebene Fehlerereignis in global.asax - Application_Error nicht bei Fehler ausgelöst wird?Wird das Ereignis global.asax Application_Error nicht ausgelöst, wenn benutzerdefinierte Fehler aktiviert sind?

Ich habe gerade festgestellt, dass, wenn ein bestimmter Fehler in meiner Anwendung auftritt, und ich die Website remote anzeigen, kein Fehler protokolliert wird. Wenn ich jedoch auf die App auf dem Server zugreife und der gleiche Fehler auftritt, wird der Fehler protokolliert.

dies ist die benutzerdefinierten Fehler Konfigurationseinstellung:

<customErrors defaultRedirect="/Error/Application" mode="RemoteOnly"> 
    <error statusCode="403" redirect="/error/forbidden"/> 
    <error statusCode="404" redirect="/error/notfound"/> 
    <error statusCode="500" redirect="/error/application"/> 
</customErrors> 

EDIT

Nur aus Interesse für die Menschen - ich am Ende völlig individuelle Fehler ausschalten und mit Umleitung in Application_Error wie so tun:

protected void Application_Error(object sender, EventArgs e) 
{ 
    Exception exception = Server.GetLastError(); 

    // ... log error here 

    var httpEx = exception as HttpException;  

    if (httpEx != null && httpEx.GetHttpCode() == 403) 
    { 
     Response.Redirect("/youraccount/error/forbidden", true); 
    } 
    else if (httpEx != null && httpEx.GetHttpCode() == 404) 
    { 
     Response.Redirect("/youraccount/error/notfound", true); 
    } 
    else 
    { 
     Response.Redirect("/youraccount/error/application", true); 
    } 
} 

Antwort

13

Wenn Sie nicht Server.ClearError aufrufen oder den Fehler in der Page_Error oder Application_Error-Ereignishandler wird der Fehler basierend auf den Einstellungen im Abschnitt der Datei Web.config behandelt.

Weitere Informationen siehe this SO question

Verwandte Themen