繁体   English   中英

如何获得WCF服务的侦听地址/端口?

[英]How can I get the listening address/port of a WCF service?

我有一个WCF服务在Windows Service Registry中的动态分配端口上侦听 如何从另一个C#应用程序中找到此服务的侦听地址? 或至少是此服务的端口?

谢谢阿德里安娜

打开ServiceHost之后,可以使用“ ChannelDispatcher”属性从服务实现中转储实际的“侦听器”。

例如:

foreach (var channelDispatcher in serviceHost.ChannelDispatchers)
{
            Console.WriteLine(channelDispatcher.Listener.Uri);
}

侦听器的URI将包含服务正在侦听的TCP / IP端口。 请注意,这当然仅适用于首先基于TCP / IP的此类绑定。 还要注意,显然每个服务可以具有多个侦听器(或侦听器端口),因此“ ChannelDispatchers”属性可以返回多个侦听器。

您可能还希望查看/转储“ State”属性的值,以确保相应的通道调度程序实际上是“ Open”(即监听)。

编辑:您可能还想看看启用WCF的WMI 尽管我从没有研究过,但它也可能会揭示此类信息。

如果您无法修改或不想修改服务的代码,则需要使用“ Process Explorer”或“ netstat”之类的工具(后面的假设您正在对服务的端点使用基于TCP / IP的绑定) 。 使用netstat的“ -b”选项显示每个端口的PID和可执行文件名称。 这将为您提供服务提示(可执行)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM