1

Ich versuche, eine globale Ausnahmebehandlung Technik zur Umsetzung auf jeder Aktion meines Controller aber meine Anwendung abstürzt, bevor die überschriebenen OnException Methode try/catch-Blöcke zu vermeiden oder das ErrorHandleAttribute sind erreicht. HierAusnahme nicht durch ErrorHanldeAttribute oder OnException Methode in ASP.NET MVC behandelt wird 5

ist ein vereinfachtes Testcode:

[HandleError] 
public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    public ActionResult Test() 
    { 
     throw new Exception("Exception Test"); 
    } 

    protected override void OnException(ExceptionContext filterContext) 
    { 
     if (filterContext == null || filterContext.ExceptionHandled) 
     { 
      return; 
     } 

     var message = filterContext.Exception.Message; 
     filterContext.Result = new HttpStatusCodeResult(HttpStatusCode.BadRequest, message); 
     filterContext.ExceptionHandled = true; 
    } 
} 

und in Web.Config:

<system.web> 
    <customErrors mode="On" defaultRedirect="Error"/> 

Wenn ich einen Haltepunkt auf der 'throw' Linie setzen und versuchen, den Zugang/Home/Testen Sie, dass meine Anwendung abstürzt und sowohl die OnException-Methode als auch das HandleErrorAttribute nur danach erreicht werden.

Fehle ich etwas?

Vielen Dank.

+2

Verwandte: [Demystifying ASP.NET MVC 5 Fehlerseiten und Fehlerprotokollierung] (https://dusted.codes/demystifying-aspnet-mvc-5-error-pages-and-error-logging) – NightOwl888

+0

@ NightOwl888 Toller Artikel! Ich habe versucht, die letzten vier dort beschriebenen Methoden der Umsetzung (wie die ersten beiden diejenigen sind, hatte ich ursprünglich), aber ich war nicht erfolgreich. Meine Anwendung wird abstürzen, bevor einer von ihnen ausgelöst wird. – ceferrari

Antwort

0

Sie müssen den HandleError Filter registrieren.

filters.Add(new HandleErrorAttribute{View = "Error"}); 
+0

Es hat nicht funktioniert. Ich habe diese Linie in App_Start/FilterConfig.cs und registriert in Global.asax mit FilterConfig.RegisterGlobalFilters (GlobalFilters.Filters); aber meine Anwendung stürzt immer noch ab. – ceferrari

Verwandte Themen