( を使用して) Web Api フィルターを作成しましたSystem.Web.Http.Filters.ActionFilterAttribute
が、ASP.Net MVC 4 内で機能させることができません。メソッドに追加しようとしましたRegisterGlobalFilters()
が、機能しませんでした。
では、ASP.Net MVC でホストされている Web Api を使用している場合、フィルターを登録するにはどうすればよいでしょうか?
( を使用して) Web Api フィルターを作成しましたSystem.Web.Http.Filters.ActionFilterAttribute
が、ASP.Net MVC 4 内で機能させることができません。メソッドに追加しようとしましたRegisterGlobalFilters()
が、機能しませんでした。
では、ASP.Net MVC でホストされている Web Api を使用している場合、フィルターを登録するにはどうすればよいでしょうか?
私のGlobal.asaxの次のコードは、私にとってはうまくいきます:
public static void RegisterWebApiFilters(System.Web.Http.Filters.HttpFilterCollection filters)
{
filters.Add(new MyWebApiFilter());
}
protected void Application_Start()
{
RegisterWebApiFilters(GlobalConfiguration.Configuration.Filters);
}
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);
}
グローバルフィルターを使用する代わりに、私はこれを行うことを好みます:
[MyWebApiFilter]
public class CustomizedApiControllerBase : ApiController
{
...
}
その後、すべての API コントローラーを継承しCustomizedApiControllerBase
ます。このアプローチは、global.ascx ファイルのグローバル フィルターと比較してより表現力豊かです。