对于特殊服务测试设置,我们需要使用不同的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配置在单个应用程序中两次托管相同的服务类型?
答案 0 :(得分:2)
服务名称必须完全合格。如下所示:
<service name="MyNamespace.Service1">
应该有用。
如何两次托管相同的服务类型(具有不同的服务类型) 配置)
您可以为每个定义的服务定义多个<endpoint/>
个节点。每个端点都可以使用不同的绑定配置。
如何在单个应用程序中两次托管相同的服务类型 使用WCF XML配置?
好的,我明白你现在想做什么。所以我认为使用XML配置是不可能的。原因是XML配置是基于约定的。该约定的一个先决条件规定,您只能托管每种服务类型的单个实例,尽管每个服务类型都可以定义多个端点。
通过删除XML配置和doing it in code可能会做你想做的事情,但是可能还有一些其他的内置限制来阻止你这样做。
您对服务进行子类化的想法可能是最好的方法。
答案 1 :(得分:1)
一种可行的解决方法是从原始Service2
派生虚拟Service
并托管两种不同的类型......但这并不是我想要做的事情。