【问题标题】:Injecting an object InRequestScope into a ValidationAttribute via Ninject throws error通过 Ninject 将对象 InRequestScope 注入 ValidationAttribute 会引发错误
【发布时间】:2013-08-29 16:06:01
【问题描述】:

Ninject 现在可以将属性注入到 ValidationAttribute (https://github.com/ninject/ninject.web.mvc/wiki/Injection-of-validators)。效果很好,直到您使用绑定对象 InRequestScope()。

所以,这就是我认为正在发生的事情。 ValidationAttribute 在 ASP.NET 中作为单例实现。

  1. 第一次实例化属性时,Ninject 会正确填充注入的属性。
  2. 注入的对象在当前请求结束时被释放
  3. 在下一个请求时,访问注入的属性会引发错误,因为它已被释放。

Ninject 不会尝试填充注入的属性,因为验证属性永远不会重新实例化。

这有意义吗?有没有人有任何解决方法的想法?

【问题讨论】:

    标签: asp.net-mvc-4 ninject


    【解决方案1】:

    没错。

    如果您确实需要请求范围内的依赖项,那么您必须为依赖项注入 factory 而不是依赖项本身,并在评估期间使用它来获取新实例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-28
      • 2020-02-21
      • 2011-10-18
      • 2012-08-18
      • 2012-05-22
      • 1970-01-01
      相关资源
      最近更新 更多