我在这里实现了异常过滤器: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”类......