1

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

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

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

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

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

4

1 回答 1

2

那是对的。

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

于 2013-08-30T14:51:04.100 回答