Веб-API: фильтр "Глобальный" не работает (ExceptionFilter)

Я реализовал фильтр исключений, как здесь: http://www.asp.net/web-api/overview/web-api-routing-and-actions/exception-handling И зарегистрировали его по всему миру, например, как microsoft или stackoverflow-users (Как добавить глобальные фильтры ASP.Net Web Api?).

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

Но если я выдаю исключение, мой метод не вызывается. Мой метод обработки исключений вызывается только в том случае, если я добавляю атрибут [MyExceptionFilter] к методу контроллера, но я надеялся, что могу избежать этого для всех методов, зарегистрировав фильтр по всему миру.

Я попытался установить порядок для фильтров, но это не повлияло.


Изменить: Я заметил, что в новом Wep Api RC метод называется "RegisterGlobalFilters", и это, кажется, коллекция фильтров MVC.

Если я вызываю

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

он работает. Это коллекция для Web Api.

Похоже, мне нужно создать собственный класс FilterConfig для веб-api...

Ответ 1

Как я уже упоминал в своем вопросе: Существуют различные коллекции фильтров. Один для MVC и один для веб-api.

Если вы хотите добавить фильтр в веб-api, добавьте эту строку кода в файл global.asax

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