And*_*ers 5 ninject asp.net-web-api
我正在使用这篇文章让ninject与Asp.Net WebApi一起工作
http://www.strathweb.com/2012/05/using-ninject-with-the-latest-asp-net-web-api-source/
这打破了所有范围,例如InSingletonScope
编辑:答案在评论中
好吧,我大部分都弄明白了.问题是NinjectResolver的BeginScope方法返回一个新的NinjectScope,它将_kernel.BeginBlock()传递给构造函数.这会将实例从绑定中声明的范围重新关联到新的激活块.
因此,曾经作用于请求的内容现在作用于激活块.
为了解决这个问题,我改变了NinjectResolver:
public IDependencyScope BeginScope(){return new NinjectScope(_kernel); }
然后,为了防止NinjectScope处理内核本身,我在NinjectScope的Dispose块中注释掉了所有内容.
据我所知,这不应该产生太大影响.内置的缓存和收集机制将像往常一样工作,轮询GC并自动在缓存中部署实例.
我认为问题的核心在于WebApi本身正在尝试完成每个请求范围管理的工作,但Ninject已经有办法完成这项工作.这两种不同的范围机制似乎并不和谐.
| 归档时间: |
|
| 查看次数: |
1045 次 |
| 最近记录: |