WCF Castle Windsor和WAS

时间:2009-08-14 16:11:05

标签: .net wcf castle-windsor

我有一个托管在WAS中的服务。我正在尝试使用依赖项注入此服务,但一直无法找到执行此操作的位置。在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服务,但是如何让它与每次调用一起使用?对于非单例服务,它期望将类型传递给ServiceHost构造函数而不是实际服务。但是,如果我这样做,那么当服务旋转时,它只查找无参数构造函数,而不是DI版本。

有关如何使这一切工作的任何想法?

由于

1 个答案:

答案 0 :(得分:2)

WCF Facility会为你(以及更多)做到这一点。