2 回答
TA贡献1831条经验 获得超10个赞
确保您base.OnActionExecuting(filterContext)在代码中的某个时刻调用。如果您使用 .NET Standard(不了解 Core),那么您还应该记住在 App_Start\FilterConfig.cs 中注册您的过滤器:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
//add this part
filters.Add(new ThrottleAttribute());
}
TA贡献1797条经验 获得超6个赞
问题是因为您使用的是ActionFilterAttributefrom System.Web.Mvc,而不是 from System.Web.Http.Filters,正如您在问题中提到的。
MVC 过滤器只会作为 MVC 生命周期的一部分为控制器执行。API 控制器的 HTTP 过滤器也是如此。这意味着您的属性应该如下所示:
using System.Web.Http.Controllers;
using System.Web.Http.Filters;
public class ThrottleAttribute : ActionFilterAttribute
{
// Note the different signature to what you have in your question.
public override void OnActionExecuting(HttpActionContext actionContext)
{
//
}
}
如果您现在在该方法上放置一个断点,并调用您的 API 控制器,它应该会命中它。
如果您想将现有过滤器用于 MVC 控制器,那将很好用。
- 2 回答
- 0 关注
- 199 浏览
添加回答
举报