2012-06-19 8 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のコレクションです。異なるフィルタのコレクションがあります。私は、Web APIの自分「に、FilterConfig」クラスを構築する必要がありますように私は私の質問で述べたと同様

は...

答えて

16

見えます。 1つはMVC用、もう1つはWeb API用です。

は、Web APIにフィルタを追加したい場合は、Global.asaxのにこのコード行を追加します

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

おかげで、正しい方向に私を指摘しました。これらすべてのグローバルフィルタコレクションを少し悪用しています...そして、通常のコントローラ用に登録された例外フィルタは機能しません。 Grr。 –

+1

ええ私はその行を持っていますが、それはまだいくつかの場合発射されていません..私はそれがデバッガで初期化されていることがわかりますが、Web APIのすべての例外でトリガーされていません –

+0

WebAPIv2 [this](http://stackoverflow.com/a/26677989/2944723)私のために働いた – tgarcia

関連する問題