Как проверить или проверить состояние службы WCF с помощью конечной точки net.tcp с удаленного сервера? - PullRequest
37 голосов
/ 10 июня 2011

Я действительно из мира Http и никогда не делал многого со старым .NET Remoting, который использовал TCP, но я понимаю концепции TCP и теперь реализовал несколько служб WCF с использованием привязки net.tcp за последние несколькогода.Большую часть времени он работает, я его потребляю, конец истории.Однако иногда настройка сервера более продвинутая, и я получаю сообщения об ошибках, которые существуют на 1 сервере, а может и не на другом.Чтобы доказать, что это брандмауэр / сервер / и т.д.проблема, которую я должен видеть, может ли служба WCF даже быть замечена или достигнута без проблемы.Это для службы WCF, размещенной в службе Windows, использующей net.tcp, которую я пытаюсь выяснить в этой ситуации.

Дело в том, что служба WCF открывается через привязку HTTP, я могу просто добавить URI вбраузер для просмотра страницы службы, дающей мне знать, что служба работает правильно.Простой тест.

Как сделать эквивалент для службы WCF, предоставляемой через привязку net.tcp?Есть ли какой-либо инструмент или команда, которую я могу использовать для проверки, например, net.tcp//mycustomWCFService:8123/MyService?Я видел несколько постов о написании кода, чтобы программно определить, доступна ли служба WCF, но я не хочу делать это таким образом.Я хочу сделать эту проверку, если это вообще возможно без кода, аналогично тому, как я поднимаю конечную точку http в браузере.

Любая помощь приветствуется, спасибо!

Ответы [ 4 ]

47 голосов
/ 26 июля 2011

Если в вашей службе реализована конечная точка метаданных (обычно с именем mex и вложенная ниже основной конечной точки, в данном случае реализованная с использованием mexTcpBinding), вы можете «пропинговать» ее с помощью утилиты командной строки svcutil, которая поставляется с VisualСтудия.Например,

svcutil net.tcp://mycustomWCFService:8123/MyService/mex

Если выдается ошибка, ваш сервис (потенциально) не работает.Если это удастся, вы (вероятно) в бизнесе.Как показывают предыдущие скобки, это приблизительное значение.Это означает, что по адресу есть прослушиватель, и он может обслуживать запрос метаданных.

32 голосов
/ 02 сентября 2011

Другой способ, который я нашел, по крайней мере, для проверки, слушает ли он, - выполнить следующую команду 'netstat' (из командной строки) на установленном сервере:

netstat -ona | найти "8123"

(Да, это разделитель канала в приведенной выше команде). Если что-то возвращается, оно активно прослушивается и размещается на найденном порту.

3 голосов
/ 27 июля 2011

Простой способ сделать это (при условии, что служба размещена в IIS) добавить HTTP-привязку (используя другой порт !!) к тому же сайту IIS и добавить <serviceDebug httpHelpPageEnabled="true" /> к поведению службы. Таким образом, вы можете легко проверить работоспособность службы, перейдя по ее HTTP-URL в браузере. По общему признанию, таким образом, вы можете только узнать, работает ли служба или нет, вы не сможете обнаружить какие-либо проблемы с сетью на конкретном порту TCP, например.

Если вам нужно решить и последнюю проблему, или если добавление HTTP-привязки невозможно, вы можете просто добавить простую операцию «PING» в контракт на обслуживание и использовать клиент net.tcp для ее вызова.

0 голосов
/ 17 августа 2017

Вы также можете использовать клиентскую программу telnet для обнаружения портов прослушивания, т. Е. Telnet {url или IP} {port}.Чтобы проверить, работает ли веб-сайт. «Telnet www.godaddy.com 80» должен сначала создать пустое окно, за которым следует ответ «Тайм-аут запроса» (400), если команды не выполняются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...