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