【问题标题】:Web API cusom filter issueWeb API 自定义过滤器问题
【发布时间】:2016-04-17 07:38:27
【问题描述】:

我在使用 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");
            }
        }
    }

然后在控制器方法之上添加过滤器属性

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

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

}

问题: 我将调试器放到我的自定义过滤器中,发现它从未被调用过。

这里有什么问题?

我是否为我的逻辑使用了正确的类型过滤器?

请指教。

【问题讨论】:

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


    【解决方案1】:

    您必须确保您的代码使用来自System.Web.Http.Filters 命名空间的ActionFilterAttribute,而不是来自System.Web.Mvc 的那个。

    【讨论】:

      【解决方案2】:

      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);
              }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-12-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-23
        • 2015-12-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多