0

我在我的一些控制器上使用了一个动作过滤器,与它的作用无关,它使用 Ninject 进行依赖注入。我在控制器构造函数和动作过滤器构造函数中设置了断点,我发现对于单个请求,控制器的构造函数被调用一次,动作过滤器被调用 8 次。以下代码产生的效果与此答案中给出的效果几乎相同。

属性:

public class NotificationAttribute : Attribute { }

public class NotificationActionFilter : IActionFilter
{
    private IUnitOfWork _unitOfWork;

    public NotificationActionFilter(IUnitOfWork uow)
    {
        _unitOfWork = uow;
    }

    public void OnActionExecuted(ActionExecutedContext filterContext)
    {
        // do stuff
    }

    public void OnActionExecuting(ActionExecutingContext filterContext)
    {

    }
}

捆绑:

kernel.BindFilter<NotificationActionFilter>(FilterScope.Controller, 0).WhenControllerHas<NotificationAttribute>();

控制器:

[NotificationAttribute]
public class TestController : Controller
{
    public ActionResult Index()
    {
        return View();
    }
}

它总是正好是 8,但我不知道为什么。我真的一直在努力解决这个问题,只是希望有人可能曾经处理过类似的事情。

4

0 回答 0