Tengo un cliente WCF hablando con un servidor WCF (en la misma máquina). Usamos netTcpBinding con seguridad de nivel de mensajes (utilizando un principalPermissionMode personalizado y una implementación personalizada de serviceCredentials). El servicio está marcado con InstanceContextMode.PerSession
.WCF conexión net.tcp muere después de 9 horas, 1 minuto
El servicio WCF se aloja automáticamente en un servicio de Windows (no en IIS).
Para falsificar keep-alive, tenemos un método Ping
que el cliente llama cada 15 segundos. Mantenemos el proxy del cliente abierto durante toda la vida del programa cliente (porque inicializar la sesión es costoso en nuestro caso).
A pesar de esto, la conexión se interrumpe después de 9 horas, 1 minuto y un bit (en 10 ejecuciones de prueba, 7 de ellas murieron después de 9h1m6s).
La única consecuencia en los registros de WCF es un mensaje "SocketConnection cancelado", seguido de un conjunto variable de excepciones, pero que generalmente incluye una excepción de "conexión en estado en fallo".
¿Hay algún tiempo de espera en WCF, o en TCP/IP, que está causando esto? Porque estoy perplejo.
10 carreras de prueba, cada una de las cuales toma más de 9 horas? Admiro tu paciencia. –
Honestamente, eso es 2 carreras de prueba de 4 clientes, y 2 al mismo tiempo de 1 cliente. Entonces solo 18 horas, y se fue de la noche a la mañana, de todos modos. –
Si vuelves a pensar con cuidado, '9x3600 + 60 + 6 <32768', que es 2 potencia de 15 – ajreal