servicio - wcf service c#
¿Por qué no puedo conectarme a un servicio de WCF con net.tcp pero puedo hacerlo con http? (7)
¿Podría ser algo tan simple como las reglas de su firewall en el host de servicio que no permite el puerto 808?
Tengo un servicio WCF ejecutándose en el IIS con ServiceHostFactory. Funciona bien con WSHttpBinding, pero debido a la velocidad y a que todo esté en la misma red (sin firewalls), quiero acelerar un poco las cosas usando NetTcpBinding.
Cuando trato de hacer eso obtengo este error:
No se pudo conectar a net.tcp: //zzz.xxx.yyy/MyService.svc. El intento de conexión duró un lapso de tiempo de 00: 00: 01.0464395. Código de error de TCP 10061: No se pudo establecer ninguna conexión porque la máquina de destino la rechazó activamente xxxx: 808.
Estoy usando SecurityMode.None
solo para asegurarme de que no me está fastidiando. Probé cualquiera de estos en dos intentos diferentes:
binding.Security.Message.ClientCredentialType = MessageCredentialType.None;
binding.Security.Message.ClientCredentialType = TcpClientCredentialType.Windows;,
También debo señalar que estoy extrayendo bastante información de una de las llamadas de servicio, así que también puse esto (tanto en los intentos de http como de tcp - estableciendo maxMessageSize en 1000000)
binding.MaxReceivedMessageSize = maxMessageSize;
binding.ReaderQuotas.MaxArrayLength = maxMessageSize;
Debería ser bastante fácil hacerlo funcionar, entonces ¿qué me estoy perdiendo?
ACTUALIZACIÓN: agregué el puerto TCP 808 a la identidad del sitio web y lo intenté de nuevo. Ahora recibo este error:
Ha intentado crear un canal a un servicio que no admite .Net Framing. Es posible que encuentre un punto final HTTP.
Consulte esta publicación sobre cómo habilitar enlaces no HTTP en IIS 7.0. De forma predeterminada, debe habilitar explícitamente net.tcp en IIS 7.0.
Espero que esto ayude.
ACTUALIZAR:
Vi su comentario: desafortunadamente, net.tcp no es compatible con IIS 6.0. Consulte este enlace que detalla los enlaces WCF compatibles para varios hosts (incluido el alojamiento propio, WAS e IIS). Parece que solo los enlaces HTTP funcionan en IIS 6.0.
Para cualquiera que tropiece con esto, mi guía para solucionar problemas net.tcp WCF tiene este tipo de problemas:
- Compruebe que net.tcp es un protocolo habilitado para el sitio web (en IIS, haga clic con el botón derecho en el sitio, vaya a la configuración avanzada y asegúrese de que los Protocolos habilitados incluyan "net.tcp").
- No estoy seguro de si esto es algo paranoico, también siempre he necesitado habilitar net.tcp para el Sitio a través de la línea de comando, así como el paso 1. Abra un símbolo del sistema, y desde
c:/windows/system32/inetsrv
, ingrese laappcmd.exe set app "NameOfWebsite/" /enabledProtocols:http,net.tcp
- Compruebe que los enlaces para el sitio web en IIS tienen una entrada para net.tcp, y que lo ha vinculado al número de puerto correcto (para mí, utilizo 9000: * como mi enlace al puerto 9000). También verifique que ningún otro sitio web en IIS esté utilizando el mismo enlace net.tcp a ese puerto
- Verifique que el servicio "Net.TCP Listener Adapter" se esté ejecutando.
Hecho.
Si está utilizando Vista, asegúrese de que se ejecutan los servicios del adaptador de escucha WAS y Net.Tcp.
También tuve este problema en Window Server 2008 R2
Solo asegúrese de que el servicio Net.Tcp Port Sharing también se haya iniciado, ya que es una dependencia del Net.Tcp Listener Adapter.
Una vez que inicio el servicio Net.Tcp Listener Adapter Service, el servicio funciona bien para mí.
compruebe si IIS tiene ambos protocolos apuntando al mismo número de puerto, acabo de encontrar si ese es el caso, no funcionará.