我有一个WCF服务侦听 Windows Service Registry中的动态分配端口.如何从另一个c#应用程序中找到此服务的侦听地址?或者至少是这项服务的端口?
谢谢,阿德里安娜
使用"ChannelDispatcher"属性,可以在ServiceHost打开后从服务实现内部转储实际的"监听器".
例如:
foreach (var channelDispatcher in serviceHost.ChannelDispatchers)
{
Console.WriteLine(channelDispatcher.Listener.Uri);
}
Run Code Online (Sandbox Code Playgroud)
侦听器的URI将包含服务所在的TCP/IP端口.请注意,这当然仅适用于首先基于TCP/IP的此类绑定.另请注意,显然每个服务可能有多个侦听器(或侦听器端口),因此"ChannelDispatchers"属性可能会返回多个侦听器.
您可能还需要查看/转储"State"属性的值,以确保相应的通道调度程序实际上是"打开",即监听.
编辑:您可能还想查看为WCF启用WMI.虽然我从未研究过它,但它也可能揭示这些信息.
如果你不能修改服务的代码,或者你不想修改服务的代码,你需要求助于"Process Explorer"或"netstat"等工具(后者再次假设你正在使用一些基于TCP/IP的绑定服务的端点) .使用netstat的"-b"选项显示每个端口的PID和可执行文件名称.这将为您提供服务(可执行文件)的提示.
| 归档时间: |
|
| 查看次数: |
4162 次 |
| 最近记录: |