使用WCF XML配置在单个主机内两次托管WCF服务
本文关键字:WCF 两次 服务 配置 XML 单个 使用 主机 | 更新日期: 2023-09-27 18:22:09
对于特殊的服务测试设置,我们需要使用不同的WCF XML配置为相同的服务类型创建多个WCF ServiceHost
实例。
我想到了以下内容:
// App.config:
<services>
<!-- does not work, name must be type, but can't be type to be unique... -->
<service name="Service1">
<endpoint ...>
<host>
...
</host>
</service>
<service name="Service2">
...
</service>
</services>
// My Tests.cs:
var sh1 = new ServiceHost(typeof(Service));
var sh2 = new ServiceHost(typeof(Service));
// connect sh1 to "Service1" configuration and sh2 to "Service2" configuration
如何将ServiceHost
实例与相应的配置元素正确连接?我尝试了以下方法:
sh1.Description.ConfigurationName = "Service1";
然而,这是行不通的。它仍然需要我将服务的name
属性设置为服务的完全限定类型名称。但我不能,因为它必须是独一无二的。。。
如何使用WCF XML配置在单个应用程序中两次托管相同的服务类型
服务名称必须完全限定。所以类似于:
<service name="MyNamespace.Service1">
应该起作用。
如何两次托管相同的服务类型(不同配置)
您可以为定义的每个服务定义多个<endpoint/>
节点。每个端点都可以使用不同的绑定配置。
如何在一个应用程序中两次托管相同的服务类型使用WCF XML配置?
好吧,我明白你现在想做什么了。所以我认为使用XML配置是不可能的。原因是XML配置是基于约定的。该约定的一个前提条件是,只允许托管每种服务类型的单个实例,尽管每种服务都可以定义多个端点。
通过删除XML配置并在代码中执行它,可能可以实现您想要的操作,但可能仍有其他内置限制阻止您执行此操作。
您对服务进行子类化的想法可能是最好的方法。
一个可能的解决方法是从原始Service
派生一个伪Service2
,并托管两种不同的类型。。。但这不是我真正想做的。