我有一个MyService
类实现IService1
和IService2
接口。我想暴露在两个单独的端点上述两个合同,如:WCF config在一个单独的端点上实现多个合同的服务类
IService1
暴露在/Service/S1
IService2
暴露在/Service/S2
如何将这样的配置是什么样子?
我有一个MyService
类实现IService1
和IService2
接口。我想暴露在两个单独的端点上述两个合同,如:WCF config在一个单独的端点上实现多个合同的服务类
IService1
暴露在/Service/S1
IService2
暴露在/Service/S2
如何将这样的配置是什么样子?
试试这个....
<services>
<service name="Service">
<endpoint address="http://localhost:8080/Service/S1"
binding="basicHttpBinding"
contract="IService1"
/>
<endpoint address="http://localhost:8080/Service/S2"
binding="basicHttpBinding"
contract="IService2 "
/>
</service>
</services>
您可以只使用一个服务有两个端点,这样 :
<services>
<service name="MyNamespace.MyService">
<endpoint address="/Service/S1"
binding="basicHttpBinding"
contract="IService1" />
<endpoint address="/Service/S2"
binding="basicHttpBinding"
contract="IService2 " />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8080/"/>
</baseAddresses>
</host>
</service>
</services>
编辑:添加基址,似乎
由于某种原因,此方法不想工作:服务无法启动。 System.InvalidOperationException:无法找到与绑定BasicHttpBinding的端点匹配方案http的基地址。注册的基地址方案是[]。 – 2010-10-14 18:32:37
请注意,我通过传递服务实例和端点Uri来实例化ServiceHost。 – 2010-10-14 18:33:38
的确,我已经相应地更新了我的答案。 – 2010-10-14 18:51:32
不是成为我正在寻找的东西。 MyService类是一个实现两个接口的类:IService1和IService2。根据http://msdn.microsoft.com/en-us/library/ms731303.aspx service.name属性必须映射到一个类型名称。如果MyService是实施合同的唯一类型,则不能在配置中使用两次。 – 2010-10-14 18:30:51
@Marcin Seredynski:你是对的 - 服务**类**不能在配置中使用两次 - 只有一个可能。 **但是:**您仍然可以在两个单独的地址上定义**两个单独的端点**,服务类实现的每个** CONTRACTS **都是一个 - 这就是您要查找的内容,不是? –
2010-10-14 20:28:20