我有一个在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将为您做到这一点(以及更多)。