Tengo un servicio de Windows que aloja tres canales dúplex WCF diferentes. Los clientes pueden conectarse para recibir actualizaciones a través de su contrato de devolución de llamada. Básicamente, hay tres canales pub-sub.WCF - Cerrar un dúplex ServiceHost bloquea la duración de CloseTimeout si se cierra cuando los clientes están conectados
Este servicio demora mucho tiempo en rebotar cuando los clientes están conectados. La llamada a ServiceHost.Close
tarda 10 segundos en volver (por lo que el servicio tarda más de 30 segundos en detenerse). Resulta que mi closeTimeout
en configuración es de 10 segundos. Cambiar este valor indica que esta es la causa del problema.
¿Qué debo hacer para cerrar el canal con prontitud? No me gusta la idea de que algo esté pasando el tiempo. Podría llamar al Abort
, pero parece que debe haber una mejor manera. No he visto esto antes en canales no dúplex, así que supongo que tiene algo que ver con que sea dúplex.
Idealmente, el cliente sería notificado inmediatamente de que el canal había fallado, de modo que el usuario pudiera ver inmediatamente que las actualizaciones se habían detenido.
¿Has probado esto? ¿Qué quiere decir que el otro extremo del canal no bloqueará para 'CloseTimeout' también? –
Esta es la forma en que uso WCF y nunca tuve un problema como el suyo. Puede ser coincidente, puede ser que no. Solo compartí mi experiencia. – adontz