我有一个托管在WAS中的服务。我正在尝试将该服务注入依赖项,但一直找不到在哪里进行操作。在IIS中托管的WCF服务中,您可以使用application_onstart事件来实例化castle容器,但在我的情况下不可用。因此,我正在尝试创建一个自定义主机工厂,如下所示:
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服务中可以很好地工作,但如何使其与每次调用相关联呢?对于非单例服务,它期望将类型传递给ServiceHost构造函数而不是实际的服务。然而,如果我这样做,那么当服务启动时,它只会查找无参数构造函数,而不是DI版本。
有什么想法可以让这一切都正常工作吗?
谢谢。