Ich möchte viele Hinweise zu einem globalen HandleErrorAttribute
folgen, aber dieses Attribut scheint direkt auf die Error
Ansicht anzuzeigen, so dass ich keinen Ort, um die Ausnahme zu protokollieren . Ich glaube nicht, dass die Aussicht der richtige Ort für Logging und andere Geschäftslogik ist.Wo oder wann Ausnahmen in einer MVC 5-Anwendung protokollieren möchten
Ich habe auch die Möglichkeit, OnException
in meinem BaseController
zu überschreiben, aber bin besorgt über einen Konflikt mit HandleErrorAttribute
. Wenn ich OnException
wie folgt überschreibe und die Ausnahme unbehandelt belasse, wird es weiter bis HandleErrorAttribute
?
protected override void OnException(ExceptionContext filterContext)
{
Exception exception = filterContext.Exception;
var controller = filterContext.RouteData.Values["controller"].ToString();
var action = filterContext.RouteData.Values["action"].ToString();
logger.Error(exception, "Exception in controller '{0}': action '{1}'.", controller, action);
filterContext.Exception = exception;
//filterContext.ExceptionHandled = true;
}
Oder wie sonst gehe ich über das Protokollieren der Ausnahme? Ich glaube, dass die oben genannten zwei Methoden es mir ersparen, einen "Versuch-Fang" bei jeder Aktionsmethode zu implementieren, und mit dem Abfangen spezifischer Ausnahmen könnte dies eine ziemlich mühsame Aufgabe sein. Ich möchte auch die Möglichkeit haben, die Anwendung neu zu starten oder etwas, sollte eine wirklich katastrophale Ausnahme auftreten, und wieder HandleErrorAttribute
lässt nicht viel Platz dafür.
Die Dokumentation für das heißt hier: https://msdn.microsoft.com/en-us/library/system.web.httpapplication.error (v = vs.110) .aspx –