Ninject MVC 与 WCF 扩展一起不适用于 InRequestScope

发布于 2024-12-24 20:29:08 字数 615 浏览 1 评论 0原文

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

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

依赖项已注入,但未调用 Dispose 方法,我已经尝试使用 InRequestScope 并执行我自己的作用域 Func return 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 节点

I have gotten Ninject MVC to work with Ninject WCF to get it to work I added two lines to CreateKernel method

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

The dependencies are injected, but the Dispose method is not called, I've tried both with InRequestScope and doing my own scope Func return OperationContext.Current as Scope object, but the dispose is not called.

Update 2012-09-05
This info is obsolete, for MVC and WCF download from Nuget Ninject.MV3 and Ninject.Extensions.WCF (3.x) the MVC Nuget template will add a Ninject bootstrapper NinjectWebCommon.cs and to add support in a svc for ninject eddit the svc xml (Right click / View markup) and add Factory="Ninject.Extensions.Wcf.NinjectServiceHostFactory" to the xml node

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

记忆之渊 2024-12-31 20:29:08

我无法回复 Remo 的答案,因为我是 stackoverflow n00b,但“System.Runtime.CompilerServices.ExtensionAttribute”异常的问题是它已从 .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 今天在 google groups 上给了我一些帮助......
“添加一个派生自“Ninject.GlobalKernelRegistrationModule”的新模块并将其加载到内核中。不过,这将在最终版本中修复。”

即类似...

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

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

I can't reply to Remo's answer because I'm a stackoverflow n00b but the issue with the 'System.Runtime.CompilerServices.ExtensionAttribute' exception is that it has moved from System.Core in .net 4.0 to mscorlib in .net 4.5. If you install .net 4.5 the problem disappears. I think something was built with .net 4.5 in the mix. https://github.com/ninject/Ninject.Web.Common/issues/3 Sounds like it will be fixed soon.
As for the Wcf InRequestScope issue Remo gave me some help today on the google groups...
"add a new module that derives from "Ninject.GlobalKernelRegistrationModule" and load it into the kernel. This will be fixed for the final release though."

i.e. something like...

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

//And where you load your modules...
kernel.Load<MyModule>();
揪着可爱 2024-12-31 20:29:08

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

I recommend using Ninject 3.0.0-rc2 available from Nuget. InRequestScope works for both Web and WCF requests side a side.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文