我怎样才能得到一个WCF服务侦听的端口? [英] How can I get the port that a WCF service is listening on?
问题描述
我有一个WCF的net.tcp服务,我想操作系统选择,它应该侦听的端口。所以,我在我的URI的端口设置为0,而的netstat
确认该操作系统已经回升在5000范围内的端口。
我如何才能找到已经被拾取,代码,服务过程里面实际的端口?
一些代码来说明我曾尝试:
键入的serviceType = ...;
URI地址=新的URI(的net.tcp://0.0.0.0:0 /服务/);
的ServiceHost的ServiceHost =新的ServiceHost(的serviceType,地址);
ServiceEndpoint终点= serviceHost.AddServiceEndpoint(类型,装订,);
INT端口1 = endPoint.ListenUri.Port; //返回0
INT端口2 = serviceHost.BaseAddresses.First()端口。 //也返回0
不知道这会帮助,但有一个类似的问题已经在这样:
的 http://stackoverflow.com/questions/2207348/how-can-i-get-the-listening-address-port-of-a-wcf-service
一个提交的答案的相关部分,你可能也想尝试:
的foreach(在serviceHost.ChannelDispatchers VAR channelDispatcher)
{
Console.WriteLine(channelDispatcher.Listener.Uri);
}
因此,也许你需要 channelDispatcher.Listener.Uri。端口
。
希望这有助于!
I have a net.tcp WCF service, and I would like the OS to pick the port that it should listen on. So I have set the port to 0 in my URI, and netstat
confirms that the OS has picked a port in the 5000 range.
How can I find the actual port that has been picked, in code, inside the service process?
Some code to show what I have tried:
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
Not sure if this will help, but there's a similar question already on SO: http://stackoverflow.com/questions/2207348/how-can-i-get-the-listening-address-port-of-a-wcf-service
The relevant part of a submitted answer that you may want to try:
foreach (var channelDispatcher in serviceHost.ChannelDispatchers)
{
Console.WriteLine(channelDispatcher.Listener.Uri);
}
So maybe you need channelDispatcher.Listener.Uri.Port
.
Hope this helps!
这篇关于我怎样才能得到一个WCF服务侦听的端口?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!