Tengo un cliente GUI que se ejecuta contra un servicio WCF alojado como un servicio de Windows en un servidor. El servicio WCF se está ejecutando en PerCall InstanceContextMode, y el cliente tiene una instancia singleton del cliente de servicio y quiero evitar la reinstalación del singleton en cada llamada, ya que dificulta las muchas llamadas asíncronas que tengo.Manejo del reinicio del servicio WCF en el lado del cliente
El problema para mí es, después de que el servicio de Windows se reinicia cada vez que el cliente realiza una llamada que llegue un mensaje de excepción de esta manera:
Este canal ya no se puede utilizar para enviar mensajes como la salida la sesión se cerró automáticamente debido a un apagado iniciado por el servidor. Deshabilite el cierre automático configurando DispatchRuntime.AutomaticInputSessionShutdown como falso, o considere modificar el protocolo de apagado con el servidor remoto.
¿Cuál es la mejor manera de evitar esto? Puedo poner cláusulas try-catch alrededor de todas las llamadas al cliente de servicio y reinstalar la instancia singleton en excepciones de comunicación, pero eso implicará un gran número de código repetitivo.
gracias, lea estos y fueron de gran ayuda – theburningmonk
El problema con esta excepción ProtocolException es que el estado del canal sigue siendo "Abierto", no "Fallado", y es muy difícil darse cuenta de que, de hecho, no se puede usar. –
¿Y qué hace uno cuando el servicio WCF está alojado en IIS y en lugar de reiniciarse debido a una excepción, el servicio se reinicia para volver a implementarse? – alimbada