我有一个在WAS中托管的服务。我正在尝试将此服务注入(inject)依赖项,但是一直找不到在哪里执行此操作。在IIS托管的WCF服务中,您可以使用application_onstart事件实例化城堡容器,但是在我的方案中不可用。因此,我正在尝试创建一个自定义宿主工厂,如下所示:

public override ServiceHostBase CreateServiceHost(string constructorString, Uri[] baseAddresses)
        {
            container = new WindsorContainer();
            container.Register(Component.For<IMyDependency>().ImplementedBy<MyDependency>());
            DefaultServiceHostFactory.RegisterContainer(container.Kernel);

            var service = container.Resolve(constructorString);
            ServiceHost serviceHost = new ServiceHost(service, baseAddresses);

            return serviceHost;
        }

这对于单例WCF服务可以正常工作,但是如何使它与每次 call 一起使用?对于非单例服务,期望将类型传递给ServiceHost构造函数,而不是实际服务。但是,如果我这样做,那么当服务启动时,它只会查找无参数的构造函数,而不是DI版本。

关于如何使这一切正常工作的任何想法?

谢谢

最佳答案

WCF Facility将为您做到这一点(以及更多)。

10-06 05:34