101

( を使用して) Web Api フィルターを作成しましたSystem.Web.Http.Filters.ActionFilterAttributeが、ASP.Net MVC 4 内で機能させることができません。メソッドに追加しようとしましたRegisterGlobalFilters()が、機能しませんでした。

では、ASP.Net MVC でホストされている Web Api を使用している場合、フィルターを登録するにはどうすればよいでしょうか?

4

4 に答える 4

114

私のGlobal.asaxの次のコードは、私にとってはうまくいきます:

public static void RegisterWebApiFilters(System.Web.Http.Filters.HttpFilterCollection filters)
{
  filters.Add(new MyWebApiFilter());
}

protected void Application_Start()
{
  RegisterWebApiFilters(GlobalConfiguration.Configuration.Filters);
}
于 2012-03-01T17:53:51.420 に答える
12

MVC 4 RC の時点で、正しいクラス名はHttpFilterCollectionです。

public static void RegisterWebApiFilters(System.Web.Http.Filters.HttpFilterCollection filters)
{
    filters.Add(new MyWebApiFilter());
}

protected void Application_Start()
{
    RegisterWebApiFilters(GlobalConfiguration.Configuration.Filters);
}
于 2012-06-21T00:13:03.060 に答える
8

グローバルフィルターを使用する代わりに、私はこれを行うことを好みます:

[MyWebApiFilter]
public class CustomizedApiControllerBase : ApiController
{
   ...
}

その後、すべての API コントローラーを継承しCustomizedApiControllerBase ます。このアプローチは、global.ascx ファイルのグローバル フィルターと比較してより表現力豊かです。

于 2014-03-01T11:20:22.360 に答える