2017-07-19 22 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