Web API cusom过滤器问题

时间:2016-04-17 07:38:28

标签: asp.net asp.net-web-api

我在使用WebAPI操作过滤器方面遇到了问题。

我在执行控制器方法之前编写了以下自定义过滤器以在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");
            }
        }
    }

然后在控制器方法

之上添加了filter属性
[dataCheck ]
[HttpGet]
[Route("GetInfo")]
public LatestInfo GetInfo()
{

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

}

问题: 我把调试器放到我的自定义过滤器中,发现它永远不会被调用。

这里有什么问题?

我的逻辑使用了正确的类型过滤器吗?

请告知。

2 个答案:

答案 0 :(得分:1)

您必须确保您的代码使用ActionFilterAttribute命名空间中的System.Web.Http.Filters而不是System.Web.Mvc中的 BitArray bitArray =new BitArray(new bool[] { true, true, false, false, false, false, false, false });

答案 1 :(得分: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);
        }
    }
}