.net - sirve - ¿Cómo hacer ping o verificar el estado del servicio WCF usando el punto final net.tcp desde el servidor remoto?
uso del punto final (4)
Realmente vengo del mundo de Http
y nunca hice mucho con el antiguo .NET Remoting que usaba TCP, pero entiendo los conceptos de TCP y ahora he implementado varios servicios de WCF usando el enlace net.tcp en los últimos años. La mayoría de las veces, funciona, lo consumo, fin de la historia. Sin embargo, a veces la configuración del servidor es más avanzada y recibo errores de comunicación en un servidor y tal vez no en otro. Para probar si se trata de un servidor de seguridad / servidor / etc. problema Necesito ver si el servicio WCF incluso se puede ver o alcanzar sin problemas. Esto es para un servicio WCF alojado en el Servicio de Windows usando net.tcp que estoy tratando de resolver esta situación.
Lo que pasa es que con un servicio WCF expuesto a través de un enlace HTTP, puedo colgar el URI en el navegador para ver la página del servicio y decirme que el servicio se está ejecutando correctamente. Examen fácil.
¿Cómo hago el equivalente para un servicio WCF expuesto a través de un enlace net.tcp? ¿Hay alguna herramienta o comando que pueda usar para probar, por ejemplo, net.tcp//mycustomWCFService:8123/MyService
? He visto algunas publicaciones sobre cómo escribir código para determinar programáticamente si el servicio WCF está disponible, pero no quiero hacerlo de esta manera. Quiero hacer esta comprobación, si es posible sin código, de forma análoga a la extracción del punto final http en un navegador.
¡Cualquier ayuda se agradece, gracias!
Otra forma que encontré para ver si está escuchando es emitir el siguiente comando ''netstat'' (desde un símbolo del sistema) en el servidor instalado:
netstat -ona | encuentra "8123"
(Sí, eso es un delimitador de tubería en el comando anterior). Si se devuelve algo, está escuchando activamente y alojado en el puerto buscado.
Si su servicio implementa un punto final de metadatos (típicamente llamado mex
y anidado debajo del punto final principal, implementado usando el mexTcpBinding
en este caso), puede "hacer ping" usando la utilidad de línea de comandos svcutil que se proporciona con Visual Studio. P.ej,
svcutil net.tcp://mycustomWCFService:8123/MyService/mex
Si arroja un error, su servicio está (potencialmente) inactivo. Si tiene éxito, estás (probablemente) en el negocio. Como sugieren los paréntesis anteriores, es una aproximación. Significa que hay un oyente en la dirección y que puede atender una solicitud de metadatos.
También puede utilizar el programa de cliente de telnet para descubrir los puertos de escucha, es decir, telnet {url o IP} {puerto}. Para comprobar si un sitio web está activo, ''telnet www.godaddy.com 80'' debe producir inicialmente una ventana en blanco seguida de una respuesta de Tiempo de espera de solicitud (400) si no se siguen los comandos.
Una forma simple de hacerlo sería (suponiendo que el servicio esté alojado en IIS) agregar un enlace HTTP (usando un puerto diferente !!) al mismo sitio IIS y agregar <serviceDebug httpHelpPageEnabled="true" />
al servicio comportamientos De esta forma, puede verificar fácilmente que el servicio esté activo navegando a su URL HTTP en un navegador. Es cierto que de esa manera solo puede averiguar si el servicio está activo o no, por ejemplo, no podrá detectar ningún problema de red en el puerto TCP en particular.
Si necesita abordar el último problema también, o si no es posible agregar un enlace HTTP, puede agregar una operación simple "PING" al contrato de servicio y usar un cliente net.tcp para invocar ese.