Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ninject 3,WCF服务和参数化构造函数_Wcf_Architecture_Dependency Injection_Ninject_Ninject Extensions - Fatal编程技术网

Ninject 3,WCF服务和参数化构造函数

Ninject 3,WCF服务和参数化构造函数,wcf,architecture,dependency-injection,ninject,ninject-extensions,Wcf,Architecture,Dependency Injection,Ninject,Ninject Extensions,我在IIS中托管了一个WCF服务。此解决方案由两个项目组成:服务和数据。服务依赖于数据,如下所示: Service -> Data 我一直在尝试反转依赖关系,如下所示: Service <- Data Service context.Kernel.Get()); } 当我尝试启动我的服务时,我仍然得到以下信息: 无法将提供的服务类型作为服务加载,因为它没有默认(无参数)构造函数。要解决此问题,请向该类型添加默认构造函数,或将该类型的实例传递给主机 我觉得问题在于我没有在内核中

我在IIS中托管了一个WCF服务。此解决方案由两个项目组成:服务和数据。服务依赖于数据,如下所示:

Service -> Data 
我一直在尝试反转依赖关系,如下所示:

Service <- Data
Service context.Kernel.Get());
}
当我尝试启动我的服务时,我仍然得到以下信息:

无法将提供的服务类型作为服务加载,因为它没有默认(无参数)构造函数。要解决此问题,请向该类型添加默认构造函数,或将该类型的实例传递给主机

我觉得问题在于我没有在内核中绑定DataInjectionModule,但是如果我尝试这么做,我必须添加一个从服务到数据的依赖项,这正是我试图避免的


如能提供一般专家意见,将不胜感激。谢谢

请检查第6点:“在.svc文件标记中添加了出厂配置。”

你做得对吗

*.svc文件应具有以下代码:

Factory="Ninject.Extensions.Wcf.NinjectServiceHostFactory"
/// <summary>
/// Load your modules or register your services here!
/// </summary>
/// <param name="kernel">The kernel.</param>
private static void RegisterServices(IKernel kernel)
{
    kernel.Bind<IService>().To<Service>()
        .WithConstructorArgument("IDataProxy", context => context.Kernel.Get<IDataProxy>());
}
Factory="Ninject.Extensions.Wcf.NinjectServiceHostFactory"