服务端点地址的WCF编程合并

本文关键字:编程 合并 WCF 端点 地址 服务 | 更新日期: 2023-09-27 18:25:42

我需要将同一wcf应用程序的两个实例相互连接(用于测试场景)。

每个客户端都公开了一个服务端点,还公开了连接到同一服务的能力被他的同龄人曝光。

每个客户端上暴露的终点:

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

问题是,每个客户端都暴露了完全相同的端点,因为它们都在同一个本地主机上运行,并且被赋予了相同的端口。

如何为客户端应用程序的每个实例动态应用端口?

我在想如何检查默认端点是否已经被占用并应用一些正在运行的端口号来附加到地址。

服务端点地址的WCF编程合并

您可以通过编程方式配置端点。参见:

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

此堆栈帖子涵盖检测端口是否空闲:

在C#中,如何检查TCP端口是否可用?

这是另一个带有一些编程端点配置的链接:

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( );