在WCF和Castle Windsor中注册同一合同的多个端点

问题描述 投票:0回答:1

我正在为我的一个项目寻求实施WCF Castle注入的帮助

[基本上,我们正在开发一种配置工具,该工具将在我们的测试和生产环境之间同步数据。它会从生产环境中读取数据,并将在测试环境中更新数据,以便测试和生产环境同步进行我们应用程序的回归测试

因此,在我的应用程序配置文件中,我维护我的服务的不同端点(它们具有不同的名称,但具有相同的约定)。我正在按以下方式注册它们

container.Register(Component.For<IService>().ImplementedBy<CustomServiceProxy>().Named(integration));
container.Register(Component.For<IService>().ImplementedBy<CustomServiceProxy>().Named(useracceptance));

类“ CustomServiceProxy”具有业务逻辑,并进行数据比较以进行同步。

在上面的代码中,当组件正在注册时,我面临以下异常。我已经验证了配置文件中提到的端点,并且为所有端点提供了不同的名称,以便它们在运行时不会相互冲突。

无法加载合同'DataSynch.IService'的端点配置部分,因为找到了该合同的多个端点配置。请通过名称指示首选的端点配置部分

我的想法是使用不同的依赖项名称注册多个服务端点,并使用注册的名称作为键来在运行时使用服务替代来解决依赖项

container.Register(Component.For<IServiceFactory<IService>>().ImplementedBy<ServiceFactory>().
                        ServiceOverrides(
                            ServiceOverride.ForKey(IntService).Eq(integration),
                            ServiceOverride.ForKey(UatService).Eq(useracceptance)));     

在服务替代中提到的相同键将传递给构造函数参数以进行依赖关系解析

对此主题的任何快速帮助都将非常有帮助

我正在我的一个项目中寻求有关实现WCF Castle注入的帮助,基本上,我们正在开发一种配置工具,该工具将在测试和...之间同步数据。...]

c# wcf dependency-injection castle-windsor castle
1个回答
0
投票

我找到了一种使用温莎城堡拦截器解决此问题的方法。

我们为依赖项注册了拦截器,并且在运行时解析了依赖项后,Castle负责添加作为拦截器一部分引入的自定义逻辑。

© www.soinside.com 2019 - 2024. All rights reserved.