Ninject MVC与WCF扩展一起使用InRequestScope不起作用

时间:2012-01-03 13:00:07

标签: asp.net-mvc wcf ninject

我已经让Ninject MVC与Ninject WCF一起工作以使其工作我在CreateKernel方法中添加了两行

kernel.Bind<ServiceHost>().To<NinjectServiceHost>();
KernelContainer.Kernel = kernel;

注入了依赖项,但是没有调用Dispose方法,我已经尝试使用InRequestScope并执行我自己的作用域Func将OperationContext.Current作为Scope对象返回,但是不调用dispose。

更新2012-09-05 此信息已过时,对于从Nuget Ninject.MV3和Ninject.Extensions.WCF(3.x)下载MVC和WCF,MVC Nuget模板将添加Ninject引导程序NinjectWebCommon.cs并在svc中添加对ninject eddit svc的支持xml(右键单击/查看标记)并将 Factory =“Ninject.Extensions.Wcf.NinjectServiceHostFactory”添加到xml节点

2 个答案:

答案 0 :(得分:2)

我建议使用Nuget提供的Ninject 3.0.0-rc2。 InRequestScope适用于Web和WCF请求的一面。

答案 1 :(得分:2)

我无法回复Remo的答案,因为我是一个stackoverflow n00b,但问题是&#39; System.Runtime.CompilerServices.ExtensionAttribute&#39;例外情况是它已从.net 4.0中的System.Core移动到.net 4.5中的mscorlib。如果安装.net 4.5,问题就会消失。我觉得有些东西是用.net 4.5构建的。 https://github.com/ninject/Ninject.Web.Common/issues/3听起来很快就会解决。 至于Wcf InRequestScope问题,Remo今天给了我一些谷歌小组的帮助......  &#34;添加一个新的模块,该模块派生自&#34; Ninject.GlobalKernelRegistrationModule&#34;并将其加载到内核中。这将在最终版本中修复。&#34;

即。类似......

public class MyModule : Ninject.GlobalKernelRegistrationModule<WcfRequestScopeCleanup>
{
}

//And where you load your modules...
kernel.Load<MyModule>();