Подтвердить что ты не робот

Как проверить или проверить статус службы 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 в браузере.

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

4b9b3361

Ответ 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), если команды не выполняются.