C# 在WCF和Castle windsor中注册同一合同的多个端点

C# 在WCF和Castle windsor中注册同一合同的多个端点,c#,wcf,dependency-injection,castle-windsor,castle,C#,Wcf,Dependency Injection,Castle Windsor,Castle,我正在寻找一些关于在我的一个项目中实现WCF Castle注入的帮助 基本上,我们正在开发一个配置工具,用于在测试和生产环境之间同步数据。它将从生产环境中读取数据,并更新测试环境中的数据,以便测试和生产环境同步,以便对我们的应用程序进行回归测试 因此,在我的应用程序配置文件中,我维护我的服务的不同端点(它们有不同的名称,但有相同的契约)。我登记如下 container.Register(Component.For<IService>().ImplementedBy<Custom

我正在寻找一些关于在我的一个项目中实现WCF Castle注入的帮助

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

因此,在我的应用程序配置文件中,我维护我的服务的不同端点(它们有不同的名称,但有相同的契约)。我登记如下

container.Register(Component.For<IService>().ImplementedBy<CustomServiceProxy>().Named(integration));
container.Register(Component.For<IService>().ImplementedBy<CustomServiceProxy>().Named(useracceptance));
container.Register(Component.For().ImplementedBy().Named(integration));
container.Register(Component.For().ImplementedBy().Named(useracceptance));
类“CustomServiceProxy”具有业务逻辑,并为同步执行数据比较

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

无法加载协定“datasync.IService”的终结点配置节,因为找到了该协定的多个终结点配置。请按名称指明首选端点配置部分

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

container.Register(Component.For<IServiceFactory<IService>>().ImplementedBy<ServiceFactory>().
                        ServiceOverrides(
                            ServiceOverride.ForKey(IntService).Eq(integration),
                            ServiceOverride.ForKey(UatService).Eq(useracceptance)));     
container.Register(Component.For().ImplementedBy()。
服务覆盖(
ServiceOverride.ForKey(IntService).Eq(集成),
ServiceOverride.ForKey(UatService.Eq(useracceptance));
服务覆盖中提到的相同密钥将传递给构造函数参数,以进行依赖项解析


任何有关此主题的快速帮助都会非常有用

我找到了一种使用Castle Windsor拦截器解决此问题的方法

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

教程链接:

考虑添加代码示例而不是链接,因为链接可能在给定时间点失效。