12

我在这里实现了异常过滤器:http ://www.asp.net/web-api/overview/web-api-routing-and-actions/exception-handling 并在全球范围内注册它,如微软或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 的集合。

看起来我必须为 web api 构建自己的“FilterConfig”类......

4

1 回答 1

21

就像我在问题中提到的那样:有不同的过滤器集合。一种用于 MVC,一种用于 Web api。

如果要将过滤器添加到 web api,请将这行代码添加到 global.asax

GlobalConfiguration.Configuration.Filters.Add(new MyExceptionFilter());
于 2012-06-19T08:09:02.650 回答