我有一个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
Run Code Online (Sandbox Code Playgroud)
Dav*_*ter 10
不确定这是否会有所帮助,但是SO上已经存在类似的问题: 我如何获得WCF服务的侦听地址/端口?
您可能想要尝试的已提交答案的相关部分:
foreach (var channelDispatcher in serviceHost.ChannelDispatchers)
{
Console.WriteLine(channelDispatcher.Listener.Uri);
}
Run Code Online (Sandbox Code Playgroud)
所以也许你需要channelDispatcher.Listener.Uri.Port.
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
9656 次 |
| 最近记录: |