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