我有一个net.tcp WCF服务,我希望操作系统选择它应该监听的端口。所以我在我的URI中将端口设置为0,并且netstat
确认操作系统选择了5000范围内的端口。如何获取WCF服务正在侦听的端口?
如何在服务流程中找到在代码中选取的实际端口?
一些代码来说明我曾尝试:
如果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 2010-08-25 06:45:45
@Cocowalla:该服务是工作进程的一部分,因此可能有多个服务进程,并且我们正在研究不涉及.NET TCP端口共享的解决方案。 – ngoozeff 2010-08-25 06:51:20
[我如何获得WCF服务的监听地址/端口?](http://stackoverflow.com/questions/2207348/how-can-i-get-the-listening-address-port-of -a-wcf-service) – mafu 2012-04-18 11:08:20