【问题标题】:Web API: 'Global' filter not working (ExceptionFilter)Web API:“全局”过滤器不起作用(ExceptionFilter)
【发布时间】:2012-06-19 07:46:11
【问题描述】:

我在这里实现了异常过滤器:http://www.asp.net/web-api/overview/web-api-routing-and-actions/exception-handling 并在全球注册,就像 microsoft 或 stackoverflow-users (How to add global ASP.Net Web Api Filters?) 解释的那样。

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”类...

【问题讨论】:

    标签: exception-handling global asp.net-web-api


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢,为我指明了正确的方向。所有这些全局过滤器集合有点愚蠢...... ..我为普通控制器注册的异常过滤器仍然不起作用。 Grr.
    • 是的,我有那行,但在某些情况下它仍然没有触发.. 我可以告诉它在调试器中初始化,但它不是在我的 web api 中的每个异常中触发
    猜你喜欢
    • 1970-01-01
    • 2018-11-11
    • 2012-03-20
    • 1970-01-01
    • 2022-08-18
    • 1970-01-01
    • 2013-11-03
    • 1970-01-01
    • 2016-08-19
    相关资源
    最近更新 更多