2012-06-19 48 views
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?)解釋。Web API:'全局'過濾器不工作(ExceptionFilter)

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

但是,如果我拋出異常,我的方法不會被調用。 僅當我將屬性[MyExceptionFilter]添加到控制器方法時,我纔會調用異常處理方法,但我希望通過全局註冊篩選器可以避免所有方法。

我試圖設置過濾器的順序,但這沒有效果。


編輯:我注意到,在新的WEP阿比RC的方法被稱爲「RegisterGlobalFilters」,這似乎是MVC過濾器回收。

如果我打電話

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

它的工作原理。這是Web Api的集合。

貌似我不得不建立自己的「一個FilterConfig」類的網頁API ...

回答

16

就像我在我的問題中提到:有不同的過濾器集合。一個用於MVC,一個用於web api。

如果你想過濾器添加到Web API,這行代碼添加到在Global.asax

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

謝謝,我指出了正確的方向。有點愚蠢的所有這些全局過濾器集合... ..而我的異常過濾器註冊正常控制器不起作用。格兒。 –

+1

是的,我有那條線,但它仍然沒有在一些情況下發射..我可以告訴它在調試器初始化,但它不會觸發每個異常在我的網絡api –

+0

在WebAPIv2 [this](http://stackoverflow.com/a/26677989/2944723)爲我工作 – tgarcia