Globale Fehlerbehandlung (außerhalb des Controllers) in ASP.NET MVC

7

Nehmen wir an, ich stelle den folgenden Code irgendwo auf eine Masterseite in meiner ASP.NET MVC-Site:

%Vor%

Auch wenn ein Attribut [HandleError] auf meinem Controller platziert ist, blubbert diese Ausnahme immer noch. Wie kann ich mit solchen Fehlern umgehen? Ich möchte in der Lage sein, zu einer Fehlerseite zu routen und trotzdem die Ausnahmedetails protokollieren zu können.

Was ist der beste Weg, um mit so etwas umzugehen?

Bearbeiten: Eine Lösung, die ich in Erwägung zog, wäre, einen neuen Controller hinzuzufügen: UnhandledErrorController. Kann ich eine Application_Error-Methode in Global.asax einfügen und dann zu diesem Controller umleiten (wo entscheidet er, was mit der Ausnahme geschehen soll)?

Hinweis: Das defaultRedirect im customErrors-Element web.config gibt die Ausnahmeinfo nicht weiter.

    
user10789 31.08.2009, 17:18
quelle

5 Antworten

5

Da MVC auf asp.net aufgebaut ist, sollten Sie in eine globale Fehlerseite definieren können web.config , genau wie in Webformularen, zB

%Vor%     
Dan Diplo 31.08.2009, 17:24
quelle
10

Aktivieren Sie customErrors:

%Vor%

und umleiten zu einem benutzerdefinierten Fehler-Controller:

%Vor%     
Todd Smith 17.11.2010 18:08
quelle
5

Sie können einen Filter erstellen, der in der Methode OnActionExecuted nach einer Ausnahme sucht:

%Vor%

Dann können Sie [WatchException] auf einen Controller oder eine Aktionsmethode setzen und Ausnahmen protokollieren. Wenn Sie viele Controller haben, könnte das mühsam sein. Wenn Sie also einen gemeinsamen Basis-Controller haben, können Sie OnActionExecuted dort überschreiben und dasselbe tun. Ich bevorzuge die Filtermethode.

    
swilliams 31.08.2009 20:36
quelle
4

Sie finden diesen Artikel möglicherweise nützlich: Ссылка

    
Mark Seemann 17.11.2010 16:21
quelle
1

Was die anzuzeigende Seite betrifft, müssen Sie einen Abschnitt customErrors erstellen in Ihrer web.config und richten Sie es für irgendwelche Statuscodes ein, die Sie behandeln möchten.

Beispiel:

%Vor%

Was das Protokollieren von Ausnahmen betrifft, würde ich ELMAH empfehlen. Es lässt sich gut mit ASP.NET MVC-Sites integrieren.

    
Joseph 31.08.2009 17:30
quelle

Tags und Links