2017-07-19 43 views
0

我有一个继承自ActionFilterAttributeIActionFilter的类。现在我正在实现接口方法并将过滤器应用于控制器和操作。什么都没有发生.......Net核心IFilter继承的接口不会执行任何方法

我通过在过滤器上应用一些断点来保证它。为了澄清我正在使用System.Web.Mvc.Filters,这就是它的大部分,我只是想要一个过滤器,它的行动之前执行。

public class AuthJwtFilter : ActionFilterAttribute, IActionFilter 
{ 
    public string Realm { get; set; } 

    void IActionFilter.OnActionExecuted(ActionExecutedContext filterContext) 
    { 
     var request = true; 
    } 
} 

而就在var request一个破发点,看它是否在得到。

[AuthJwtFilter] 
    [HttpGet("/test")] 
    public IActionResult Test() 
    { 
     return Ok("Hello"); 
    } 

这是控制器动作

+2

是的,我们需要代码。 – JuanR

回答

0

从类声明中删除IActionFilter接口。 ActionFilterAttribute已经实现了该接口。

覆盖基本方法:

public override void OnActionExecuted(ActionExecutedContext filterContext) 
{ 
    var request = true; 
} 

这应该工作。

UPDATE:顺便说一句,如果你希望你的过滤器动作执行之前进行发射,你应该覆盖OnActionExecuting代替。

+0

是的,我也尝试过,没有发生任何事情。 –

+0

顺便说一句,我试着添加一些其他的开箱即用的过滤器,并没有启动。可能是我错了,但[HttpGet]很好,但[Authorize]已经死了。 –

+0

@SlavKirilov:我明白了。你使用的是什么版本的MVC? – JuanR