12

ここのように例外フィルターを実装しました: http://www.asp.net/web-api/overview/web-api-routing-and-actions/exception-handling そして、microsoft や stackoverflow-users のようにグローバルに登録しました ( Howグローバル 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

質問で述べたように、さまざまなフィルター コレクションがあります。1 つは MVC 用、もう 1 つは Web API 用です。

フィルターを Web API に追加する場合は、このコード行を global.asax.

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