Tengo un servicio WCF simple con el que me comunico de forma asincrónica.Conexiones WCF que exceden las conexiones máximas cuando se utiliza el patrón asíncrono
Lo que no me gusta es cuando se llama al EndServiceMethod(IASyncResult)
si olvido para llamar al método Close()
, el servicio realmente dejar la conexión abierta y luego todas las conexiones restantes fallará después de la WCF alcanza su máximo las conexiones simultáneas cuentan con excepciones de tiempo de espera.
He intentado utilizar el atributo [ServiceBehavior(InstanceContextMode=InstanceContextMode.PerCall)]
en el contrato de servicio, que no parece tener ningún efecto en el estado de la conexión del servicio.
Quizás lo he implementado incorrectamente?
Cualquier idea o sugerencia.
Estoy tratando de encontrar un patrón de comportamiento para el WCF que permita a los clientes realizar una solicitud, y luego el servidor responda a la solicitud y luego suponga que la conexión ha finalizado y puede finalizar.
he estado cerrándola en el manejador de devolución de llamada y que parece funcionar. Supongo que esperaba una solución más elegante que permita que esto funcione en el lado del servidor. – Beta033
Esa es realmente la mejor solución. Dependiendo de su código, puede contar el número de manejadores de devolución de llamada y el número de veces que ha llamado para ver si coinciden. –
Excepto porque voy a tener muchos clientes, posiblemente con varias conexiones. ¿Cómo hacen los servicios públicos de wcf? No puedo imaginar que esperen que sus clientes siempre sean buenos para cerrar las conexiones cuando terminen. – Beta033