2013-07-29 30 views
7

Nel mio web.config ho incluso:attributo HandleError non ha alcun effetto

<customErrors mode="On" /> 

Ora lo schermo giallo della morte non è mostrata più. ho pensato che avrei dovuto includere l'attributo HandleError ai miei metodi del controller o classe stessa:

[HandleError] 
public ActionResult About() 
{ 
    throw new Exception("Just an exception"); 
    return View(); 
} 

ma non avere alcun effetto, è lo stesso di:

public ActionResult About() 
{ 
    throw new Exception("Just an exception"); 
    return View(); 
} 

In in entrambi i casi viene visualizzata la pagina di errore personalizzata. Quindi, cos'è l'attributo HandleError?

risposta

13

Questo può accadere se FilterConfig.cs, sotto la cartella App_Start del progetto MVC, contiene:

public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
{ 
    filters.Add(new HandleErrorAttribute()); 
} 

Poiché il filtro HandleError è registrato quando si avvia l'App , non devi decorare ogni azione del controller con questo attributo.

+1

Una spiegazione eccellente e concisa che risponde anche alla domanda: "Qual è lo scopo di" RegisterGlobalFilters'? " – Dan

Problemi correlati