2016-04-17 68 views
2

我在使用WebAPI操作過濾器時遇到問題。Web API cusom過濾器問題

我寫了下面的自定義過濾器,在執行控制器方法之前在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.Http.Filters命名空間中的ActionFilterAttribute,而不是System.Web.Mvc中的那個。

0

Karthik的回答是正確的 - 在你的班級裏還有其他一些事情你應該糾正。

您的覆蓋功能應接受HttpActionContext而不是ActionExecutingContext。此外,您應該在您的功能結束時致電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); 
     } 
    } 
}