我试图使用Ninject v3来测试.NET4 Windows服务( System.ServiceProcess.ServiceBase
)中托管的Web服务 .
我创建了 MyServerModule : NinjectModule
,并且在 Load()
中,我根据 app.config
设置有条件地将我的接口绑定到运行时对象 .
在 ServiceBase.OnStart()
中,init步骤是:首先,基于 MyServerModule
的实例创建一个新的 StandardKernel
,并将其与Ninject容器关联 . 接下来,根据我的服务类创建 NinjectServiceHost
的实例,然后打开服务主机以开始监听 .
在Ninject v2中,代码是:
IKernel kernel = new StandardKernel(new MyServerModule());
KernelContainer.Kernel = kernel;
NinjectServiceHost serviceHost = new NinjectServiceHost(typeof(MyService));
serviceHost.Open();
但是,在Ninject v3中, KernelContainer
不再存在 . 此外, NinjectServiceHost()
现在接受一个子类 IServiceBehavior
的服务器工厂 .
如何在Ninject v3中执行类似的初始化步骤?
1 回答
我遇到了在Windows服务中运行多个自托管WCF服务的类似问题 . 在初始化每个NinjectServiceHost时,我最终使用
kernel.Get<IServiceBehavior>()
作为第一个参数 .您的示例可能如下所示: