2016-04-17 10 views
2

WebAPIアクションフィルタの使用に問題があります。Web APIキューブフィルタの問題

コントローラーメソッドを実行する前に、http要求ヘッダーでいくつかのロジックを実行するために、次のカスタムフィルターを作成しました。

using System; 
using System.Web.Mvc; 


    namespace WebApi.Filters 
    { 
     public class dataCheck : ActionFilterAttribute 
     { 
      public override void OnActionExecuting(ActionExecutingContext filterContext) 
      { 
       Console.Write("custom filter called"); 
      } 
     } 
    } 

そして、コントローラメソッドの上に追加のフィルタ属性

[dataCheck ] 
[HttpGet] 
[Route("GetInfo")] 
public LatestInfo GetInfo() 
{ 

    TestContext context = new TestContext(); 
    LatestInfo latestReleaseInfo = new LatestInfo(); 
    return LatestInfo ; 

} 

問題: 私は私のカスタムフィルタにデバッガを入れて、それが呼び出されることはありません発見しました。

ここで何が間違っていますか?

私のロジックに正しいタイプのフィルタを使用していますか?

お知らせください。

答えて

1

System.Web.Mvcのものではなく、System.Web.Http.Filters名前空間のコードがActionFilterAttributeであることを確認する必要があります。

0

Karthikの答えは正しい - あなたのクラスには、修正する必要があるいくつかのことがあります。

オーバーライド機能は、ActionExecutingContextではなく、HttpActionContextを受け入れる必要があります。また、機能終了時にbase.OnActionExecuting(actionContext);に電話する必要があります。

using System; 
using System.Web.Http.Controllers; 
using System.Web.Http.Filters; 

namespace WebApi.Filters 
{ 
    public class dataCheck : ActionFilterAttribute 
    { 
     public override void OnActionExecuting(HttpActionContext actionContext) 
     { 
      Console.WriteLine("debugger stop here"); 

      // custom filter code 

      base.OnActionExecuting(actionContext); 
     } 
    } 
}