我有一個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