WCF Castle Windsor and WAS

3

我有一个托管在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版本。
有什么想法可以让这一切都正常工作吗?
谢谢。
1个回答

2

谢谢,我之前已经成功使用WCF Facility并在IIS中激活了WCF服务,但是没有在WAS中。过去我只需将服务连接到Wcf工厂,然后在global.asax中添加容器即可。然而,在WAS中我无法在global.asax中连接容器,那么你会如何将所有这些组合起来呢? - Jon Archway
答案是要钩入AppInitialize()函数。 - Jon Archway
很酷,很高兴你让它工作起来了。如果您对Castle有任何问题,最好在讨论列表上询问:http://groups.google.com/group/castle-project-users。 - Krzysztof Kozmic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接