Как проверить или проверить статус службы WCF с использованием конечной точки net.tcp с удаленного сервера?
Я действительно пришел из мира Http
и никогда не делал многого со старым .NET Remoting, который использовал TCP, но я понимаю понятия TCP и теперь реализовал несколько служб WCF, используя привязку net.tcp к последним года. В большинстве случаев он работает, я использую его, конец истории. Однако иногда настройка сервера более продвинута, и я получаю коммуникационные ошибки, которые существуют на 1 сервере и, возможно, не из другого. Чтобы убедиться, что это брандмауэр/сервер/etc. Проблема. Мне нужно выяснить, можно ли даже увидеть или получить доступ к службе WCF без проблем. Это для службы WCF с сервисом Windows, использующей net.tcp, что я пытаюсь выяснить эту ситуацию.
Дело в том, что служба WCF, открытая через HTTP-привязку, я могу просто плюнуть в URI в браузере, чтобы просмотреть страницу службы, позволяющую мне знать, что служба работает правильно. Легкий тест.
Как сделать эквивалент для службы WCF, открытой через привязку net.tcp? Есть ли какой-либо инструмент или команда, которую я могу использовать для тестирования, например, net.tcp//mycustomWCFService:8123/MyService
? Я видел несколько сообщений о написании кода, чтобы программно определить, доступна ли служба WCF, но я не хочу этого делать. Я хочу сделать эту проверку, если это вообще возможно без кода, аналогичного мне, потянув конечную точку http в браузере.
Любая помощь приветствуется, спасибо!
Ответы
Ответ 1
Если ваша служба реализует конечную точку метаданных (обычно называемую mex
и вложенную под основной конечной точкой, реализованную в этом случае с помощью mexTcpBinding
), вы можете "ping" ее с помощью утилиты командной строки svcutil, которая предоставляется с помощью Visual Студия. Например,
svcutil net.tcp://mycustomWCFService:8123/MyService/mex
Если он вызывает ошибку, ваша служба (потенциально) будет отключена. Если это удастся, вы (вероятно) в бизнесе. Как предполагают предыдущие скобки, это приближение. Это означает, что есть слушатель по адресу и что он может обслуживать запрос метаданных.
Ответ 2
Другим способом, который я нашел, по крайней мере, посмотреть, если он прослушивается, является выдача следующей команды "netstat" (из командной строки) на установленном сервере:
netstat -ona | найти "8123"
(Да, это разделитель каналов в приведенной выше команде). Если что-то возвращается, оно активно прослушивается и размещается в поисковом порту.
Ответ 3
Простым способом сделать это будет (при условии, что служба размещена в IIS), добавить HTTP-привязку (используя другой порт!) на один и тот же сайт IIS и добавить <serviceDebug httpHelpPageEnabled="true" />
в поведение службы. Таким образом, вы можете легко проверить, работает ли служба, перейдя по своему URL-адресу HTTP в браузере. По общему признанию, таким образом вы можете узнать только, работает ли служба или нет, вы не сможете обнаружить какие-либо проблемы с сетью на конкретном TCP-порту, например.
Если вам необходимо решить эту проблему, или если добавление связывания HTTP невозможно, вы можете просто добавить простую операцию "PING" к контракту на обслуживание и использовать клиент net.tcp для вызова этого.
Ответ 4
Вы также можете использовать клиентскую программу telnet для обнаружения портов прослушивания, то есть telnet {url или IP} {port}. Чтобы проверить, нет ли веб-сайта... "telnet www.godaddy.com 80" должен сначала создать пустое окно, за которым следует ответ "Время ожидания запроса" (400), если команды не выполняются.