我在使用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 ;
}
问题: 我把调试器放到我的自定义过滤器中,发现它永远不会被调用。
这里有什么问题?
我的逻辑使用了正确的类型过滤器吗?
请告知。
答案 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);
}
}
}