2012-06-19 6 views
11

Ich implementiert den Ausnahmefilter wie hier: http://www.asp.net/web-api/overview/web-api-routing-and-actions/exception-handling Und registriert es global, wie Microsoft oder Stackoverflow-Benutzer (How to add global ASP.Net Web Api Filters?) erklärt.Web-API: 'Global' Filter funktioniert nicht (ExceptionFilter)

public static void RegisterWebApiFilters(System.Web.Http.Filters.GlobalFilterCollection filters) 
{ 
//other filters 
    filters.Add(new MyExceptionFilter()); 
} 

Aber wenn ich eine Ausnahme auslösen, wird meine Methode nicht aufgerufen. Meine Ausnahmebehandlungsmethode wird nur aufgerufen, wenn ich das Attribut [MyExceptionFilter] der Controller-Methode hinzufüge, aber ich hoffte, dass ich das für alle Methoden vermeiden kann, indem ich den Filter global registriere.

Ich habe versucht, eine Reihenfolge für die Filter zu setzen, aber dies hatte keine Wirkung.


Edit: ich bemerkt habe, dass in der neuen Wep Api RC die Methode "RegisterGlobalFilters" genannt wird, und dies scheint die MVC Filtersammlung zu sein.

Wenn ich

GlobalConfiguration.Configuration.Filters.Add(new MyExceptionFilter()); 

nennen es funktioniert. Dies ist die Sammlung für die Web API.

Sieht aus wie ich habe meine eigene „FilterConfig“ Klasse für den Web-api zu bauen ...

Antwort

16

Wie ich in meiner Frage erwähnt: Es gibt verschiedene Filtersammlungen. Eine für MVC und eine für die Web-API.

Wenn Sie den Filter auf den Web-api hinzufügen möchten, fügen Sie diese Codezeile der global.asax

GlobalConfiguration.Configuration.Filters.Add(new MyExceptionFilter()); 
+1

Danke, wies mich in die richtige Richtung. Ein bisschen doof all diese globalen Filter-Sammlungen ... ..und trotzdem funktioniert mein Ausnahme-Filter, der für normale Controller registriert ist, nicht. Gr. –

+1

yeah Ich habe diese Zeile aber es ist immer noch nicht in einigen Fällen feuern .. ich kann sagen, es ist im Debugger initialisiert, aber es wird nicht auf jede Ausnahme in meinem Web-API ausgelöst –

+0

In WebAPIv2 [this] (http://stackoverflow.com/a/26677989/2944723) arbeitete für mich – tgarcia

Verwandte Themen