【发布时间】:2011-04-03 13:35:12
【问题描述】:
我有一个 net.tcp WCF 服务,我希望操作系统选择它应该监听的端口。所以我在 URI 中将端口设置为 0,netstat 确认操作系统选择了 5000 范围内的端口。
如何在服务进程中以代码的形式找到实际选择的端口?
一些代码来展示我的尝试:
Type serviceType = ...;
Uri address = new Uri("net.tcp://0.0.0.0:0/Service/");
ServiceHost serviceHost = new ServiceHost(serviceType, address);
ServiceEndpoint endPoint = serviceHost.AddServiceEndpoint(type, binding, "");
int port1 = endPoint.ListenUri.Port; // returns 0
int port2 = serviceHost.BaseAddresses.First().Port; // also returns 0
【问题讨论】:
-
让服务监听随机端口是很不寻常的 - 你有什么理由要这样做吗?
-
@Cocowalla:该服务是工作进程的一部分,因此一次可以有多个,我们正在寻找不涉及 .NET TCP 端口共享的解决方案。跨度>