2012-02-25 65 views
1

我需要將相同的wcf應用程序的2個實例相互連接(用於測試場景)。WCF編程式併入服務端點地址

每個客戶端都暴露了一個服務端點,並且也是連接到他的對等端暴露的相同服務 的能力。

暴露的每個客戶端上的終點:

<services> 
    <service name="BackGammonClient.ClientService"> 
     <endpoint address="net.tcp://localhost:8081/ClientService" binding="netTcpBinding" 
       bindingConfiguration="" contract="Contracts.Client.IClient" /> 
    </service> 
    </services>  

的問題是,每個客戶機公開完全相同的端點,因爲它們都在同一個本地主機上運行並給出了相同的端口。

我該如何動態地爲每個客戶端應用程序應用一個端口?

我正在考慮如何檢查默認端點是否已被採取 並應用一些正在運行的端口號碼來附加到地址。

回答

2

您可以通過編程來配置您的端點。請參閱:

http://msdn.microsoft.com/en-us/library/ff647110.aspx

這疊後覆蓋檢測,如果一個端口是免費的:

In C#, how to check if a TCP port is available?

下面是一些綱領性的端點配置另一個鏈接:

http://en.csharp-online.net/WCF_Essentials%E2%80%94Programmatic_Endpoint_Configuration

所以,類似於:

string svcUri = String.Format("net.tcp://localhost:{0}", port); 
ServiceHost host = new ServiceHost(typeof(MyService)); 
Binding tcpBinding = new NetTcpBinding(); 
host.AddServiceEndpoint(typeof(IMyOtherContract),tcpBinding, 
svcUri); 
host.Open(); 
+0

MSDN文章似乎過於複雜, 所有我需要的是在端點標籤 我不使用SVC的工具 創建另一側的代理值分配給地址我通過使用該服務channelfacotry – 2012-02-25 14:17:21

+0

我添加了另一個似乎更簡化的鏈接 – bryanmac 2012-02-25 19:23:25

+0

謝謝,我會發布我最終做的 簡單的答案,但不是傳統的我想聽聽您的意見 – 2012-02-26 07:01:48