C# .Net核心IFilter继承的接口不会';不要执行任何方法
我有一个类继承自C# .Net核心IFilter继承的接口不会';不要执行任何方法,c#,asp.net-core,asp.net-core-mvc,ifilter,C#,Asp.net Core,Asp.net Core Mvc,Ifilter,我有一个类继承自actionfilteratAttribute和IActionFilter。现在我正在实现接口方法,并将过滤器应用于控制器和操作。什么都没发生 我通过在整个过滤器上应用一些断点来确保它。为了澄清这一点,我使用的是System.Web.Mvc.Filters,这就是其中的大部分,我只想在执行操作之前使用一个过滤器 public class AuthJwtFilter : ActionFilterAttribute, IActionFilter { public string
actionfilteratAttribute
和IActionFilter
。现在我正在实现接口方法,并将过滤器应用于控制器和操作。什么都没发生
我通过在整个过滤器上应用一些断点来确保它。为了澄清这一点,我使用的是System.Web.Mvc.Filters
,这就是其中的大部分,我只想在执行操作之前使用一个过滤器
public class AuthJwtFilter : ActionFilterAttribute, IActionFilter
{
public string Realm { get; set; }
void IActionFilter.OnActionExecuted(ActionExecutedContext filterContext)
{
var request = true;
}
}
只需在var请求上设置一个断点,查看它是否进入
[AuthJwtFilter]
[HttpGet("/test")]
public IActionResult Test()
{
return Ok("Hello");
}
这就是控制器操作从类声明中删除IActionFilter
接口ActionFilterAttribute
已经实现了该接口
重写基本方法:
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
var request = true;
}
这应该行得通
更新:顺便说一句,如果你想在操作执行之前启动过滤器,你应该重写操作执行
。是的,我们需要代码。顺便说一句,我尝试添加了一些其他现成的过滤器,但没有启动。也许我错了,但是[HttpGet]很好,但是[Authorize]已经死了。@SlavKirilov:我明白了。您使用的是哪个版本的MVC?@SlavKirilov:顺便说一下,正确的名称空间应该是System.Web.MVC.myMicrosoft.AspNet.MVC
is 5.2.3。我不知道在哪里检查我的System.Web.Mvc
版本,但在我的“使用”部分,我声明了System.Web.Mvc.Filters
我想我知道发生了什么。这不是正确的名称空间。在using语句中必须有System.Web.Http.Filters
。删除System.Web.Http.Filters
并添加System.Web.Mvc
。