【发布时间】:2011-03-20 05:37:27
【问题描述】:
我有两个进程在同一台机器上运行。每个进程都承载一个 WCF 服务,以允许异步进程间通信。到目前为止,我已经为这两个 wcf 服务分配了一个固定的端口 8731 和 9000。如果客户机器占用了这些端口怎么办?如果我要动态分配一个可用端口,如何让 wcf 客户端动态找到 wcf 服务?
提前感谢您的帮助。
【问题讨论】:
标签: wcf
我有两个进程在同一台机器上运行。每个进程都承载一个 WCF 服务,以允许异步进程间通信。到目前为止,我已经为这两个 wcf 服务分配了一个固定的端口 8731 和 9000。如果客户机器占用了这些端口怎么办?如果我要动态分配一个可用端口,如何让 wcf 客户端动态找到 wcf 服务?
提前感谢您的帮助。
【问题讨论】:
标签: wcf
我在这篇文章上迟到了,但今天我们有更好的解决方案来解决这个问题。 有一个配置端点称为listenUriMode(https://msdn.microsoft.com/en-us/library/system.servicemodel.description.listenurimode(v=vs.110).aspx),如果我们将此值设置为“唯一”,它将主机名绑定到端口0,这将要求操作系统分配一个空闲端口。
现在客户端可以使用 WCF 发现 (https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/wcf-discovery-overview) 了解服务器端口。
【讨论】:
我假设您正在使用代码创建服务。如果你担心客户端没有可用的端口,you should configure your endpoints using app.config. 这样,如果客户端有端口问题,你可以简单地更改他们的配置文件而不是重新编译你的代码。
【讨论】: