Веб-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());