具有ninject扩展的WCF服务

具有ninject扩展的WCF服务,wcf,web-services,ninject,Wcf,Web Services,Ninject,我使用ninject扩展的wcf服务有问题。当我的服务没有无参数构造函数时,当我尝试调用它时,我得到了一个错误,我丢失了它,当我得到无参数构造函数时: [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)] [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] publ

我使用ninject扩展的wcf服务有问题。当我的服务没有无参数构造函数时,当我尝试调用它时,我得到了一个错误,我丢失了它,当我得到无参数构造函数时:

  [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
public class ContractService: IContractService
{
 public ContractService()
        : this(new AddressService(), new TelephoneService())
    {

    }
    [Inject]
    public ContractWCFService(IAddressService addressService, ITelephoneService telephoneService)
    {

        _addressService = addressService;
        _telephoneService = telephoneService;
    }...
}
然后,调用无参数的一个,我认为应该调用属性为[Inject]的第二个

编辑:NinjectWebCommon:

  private static void RegisterServices(IKernel kernel)
    {
        kernel.Bind<ServiceHost>().To<NinjectServiceHost>();

        kernel.Bind<IAddressService>().To<AddressService>().InHttpRequestScope();
        kernel.Bind<TelephoneService>().To<TelephoneService>().InHttpRequestScope();
        kernel.Bind(typeof(IRepository<>)).To(typeof(Repository<>)).InHttpRequestScope();
        kernel.Bind(typeof(EFModel)).ToSelf().InHttpRequestScope();
        IoC.Initialize((StandardKernel)kernel);


    }        
私有静态无效注册服务(IKernel内核)
{
kernel.Bind().To();
kernel.Bind().To().inhtprequestscope();
kernel.Bind().To().inhtprequestscope();
Bind(typeof(IRepository)).To(typeof(Repository)).inhtprequestscope();
Bind(typeof(EFModel)).ToSelf().inhtprequestscope();
初始化((标准内核)内核);
}        

有什么想法吗?

要通过ninject传递参数/管理实例,您应该结合 和/或特定对象

这篇文章也很有帮助: