Вы можете вывести фактические «Слушатели» изнутри реализации службы после открытия ServiceHost, используя свойство «ChannelDispatcher».
Например:
foreach (var channelDispatcher in serviceHost.ChannelDispatchers)
{
Console.WriteLine(channelDispatcher.Listener.Uri);
}
URI слушателя будет содержать порт TCP / IP, на котором находится служба. Обратите внимание, что это, конечно, верно только для таких привязок, которые в первую очередь основаны на TCP / IP. Также обратите внимание, что очевидно, что каждая служба может иметь несколько прослушивателей (или портов прослушивателей), поэтому свойство «ChannelDispatchers» может возвращать несколько прослушивателей.
Вы также можете посмотреть / сбросить значение свойства «State», чтобы убедиться, что соответствующий диспетчер каналов действительно «открыт», т. Е. Прослушивает.
Редактировать: Вы также можете посмотреть , включающий WMI для WCF . Хотя я никогда не смотрел на это, это могло бы также раскрыть и такую информацию.
Если вы не можете изменить код службы или не хотите этого, вам нужно прибегнуть к таким инструментам, как «Process Explorer» или «netstat» (позднее, если вы используете связывание на основе TCP / IP для конечные точки сервиса). Используйте параметр «-b» netstat для отображения PID и имени исполняемого файла для каждого порта. Это даст вам подсказку к вашему сервису (исполняемому файлу).