c# .net wcf self-hosting

c# - Cómo hacer funcionar la compresión gzip en WCF 4.5



wcf service host (1)

WCF 4.5 admite GZIP sin bibliotecas de terceros o extensiones escritas a mano. Lo tengo funcionando a través del enlace TCP, pero no puedo encontrar una manera de hacerlo funcionar a través del enlace HTTP. Mi wcf: el servicio se aloja en un servicio de Windows.

Complemento: no se me permite usar IIS; No puedo cambiar a ningún reemplazo de WCF.

esto funciona con gzip:

binding="customBinding" bindingConfiguration="tcpCompressionBinding" name="tcp"

y esto es lo que actualmente uso para http:

binding="basicHttpBinding" bindingConfiguration="httpBinding" name="http"

La documentación realmente no me ayuda: http://msdn.microsoft.com/en-us/library/dd456789.aspx .

Pero, de acuerdo con esto, debería funcionar:

A partir de WCF 4.5, el codificador binario WCF agrega soporte para la compresión. El tipo de compresión se configura con la propiedad CompressionFormat. Tanto el cliente como el servicio deben configurar la propiedad CompressionFormat. La compresión funcionará para los protocolos HTTP, HTTPS y TCP. Si un cliente especifica usar compresión pero el servicio no lo admite, se genera una excepción de protocolo que indica una discrepancia de protocolo. Para obtener más información, consulte Cómo elegir un codificador de mensajes.


Según la solicitud copié mi comentario como respuesta:

"Dado que esta propiedad solo está expuesta en el binaryMessageEncodingBindingElement, necesitará crear un enlace personalizado como el siguiente para usar esta función:

<customBinding> <binding name="BinaryCompressionBinding"> <binaryMessageEncoding compressionFormat="GZip"/> <httpTransport /> </binding> </customBinding>

y reciba mensajes comprimidos y, por lo tanto, la propiedad compressFormat debe configurarse en el elemento binaryMessageEncoding tanto en el cliente como en el servicio. "Tanto el cliente como el servicio deben aceptar enviar