2012-06-19 11 views
11

Implementé el filtro de excepciones como aquí: http://www.asp.net/web-api/overview/web-api-routing-and-actions/exception-handling Y lo registré globalmente, como microsoft o stackoverflow-users (How to add global ASP.Net Web Api Filters?) explicados.Web API: el filtro 'Global' no funciona (ExceptionFilter)

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

Pero si lanzo una excepción, no se llama a mi método. Se llama a mi método de manejo de excepciones solo si agrego el atributo [MyExceptionFilter] al método del controlador, pero esperaba poder evitarlo para todos los métodos registrando el filtro globalmente.

Traté de establecer un orden para los filtros, pero esto no tuvo ningún efecto.


Editar: me he dado cuenta, que en el nuevo WEP Api RC el método se llama "RegisterGlobalFilters" y esto parece ser la recolección de los filtros MVC.

Si llamo

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

funciona. Esta es la colección para la API web.

Parece que tengo que construir mi propia clase "FilterConfig" para la Web API ...

Respuesta

16

Como he mencionado en mi pregunta: ¿Hay diferentes colecciones de filtro. Uno para MVC y otro para la API web.

Si desea agregar el filtro a la Web API, añada esta línea de código para el Global.asax

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

Gracias, me señaló en la dirección correcta. Un poco de todas estas colecciones de filtros globales ... y aún mi filtro de excepción registrado para controladores normales no funciona. Grr. –

+1

sí, tengo esa línea, pero todavía no está activando en algunos casos ... puedo decir que se inicializó en el depurador, pero no se activó en todas las excepciones en mi API web –

+0

en WebAPIv2 [this] (http://stackoverflow.com/a/26677989/2944723) funcionó para mí – tgarcia

Cuestiones relacionadas