WCF - conexión de socket no cierra mediante el uso de WS-compresión con net.tcp vinculante

StackOverflow https://stackoverflow.com/questions/1476232

Pregunta

Recientemente he estado trabajando en una aplicación WCF y necesita un poco de funcionalidades para comprimir el cuerpo del mensaje de jabón, por lo que el tamaño de la respuesta del servicio debe ser reducida.

Después de algunas investigaciones, he encontrado una aplicación disponible en línea a partir http://weblogs.asp.net/cibrax/archive/2006/03/29/WS_2D00_Compression-for-WCF.aspx'> http://weblogs.asp.net/cibrax/archive/2006/03 /29/WS_2D00_Compression-for-WCF.aspx , los autores de que crearon un nuevo elemento de unión 'CompressionBindingElement', asociada a sus canales de clases relacionadas.

Esta solución de compresión funciona perfectamente en mi aplicación WCF, y el tamaño de la respuesta se redujo casi un 90%, genial! Yo probé en primer lugar, a través de http vinculante (significa la unión personalizado mediante transporte HTTP) y todo parece bueno.

Una vez que lo probé través de la unión (unión personalizado mediante transporte TCP) net.tcp, la aplicación aún funcionaba bien. Sin embargo, cuando he comprobado por algunas herramientas de seguimiento, encontré algo raro.

Hice una prueba unidad llamando 10 veces en un método, que creó el cliente por ChannelFactory, y ha añadido explícitamente todos los elementos de unión, incluyendo el elemento de unión de compresión. Cuando en primer lugar comprobado la respuesta en tcptrace, me sorprendió ver que todos estos 10 mensajes se combinan en una sola petición.

Así que he intentado SvcTraceViewer para comprobar la solicitud, y encontraron que la conexión de socket mantiene abierta hasta que el servicio fue cerrado. Miré dentro del progreso de procesamiento y creía todos los mensajes, los canales están cerrados para cada solicitud, pero la conexión no cerrado.

El problema sólo ocurrió en TCP neta de unión con un elemento de unión de compresión, si el elemento no se agregó a la unión o la unión en http todo parece estar bien.

¿Alguien ha probado que la solución y visto el mismo problema antes? ¿Hay algo más que pueda hacer para forzar la conexión a cerrar? Podría yo he perdido algo?

Muchas gracias, Tony

¿Fue útil?

Solución

Parece que Microsoft tiene ahora un artículo oficial el codificador de compresión: http://msdn.microsoft.com/en- es / library / ms751458 (v = VS.90) .aspx

Lo he comprobado una y parece que el problema se ha ido. No es tan fácil de hacer mi prueba de funcionamiento unidad después de muchos días:)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top