WebApi和Ninject单例范围

时间:2013-04-30 13:32:11

标签: asp.net-web-api ninject

我正在使用这篇文章让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已经有   这样做的一种方式。两种不同的范围机制没有   似乎和睦相处。

0 个答案:

没有答案