Как заставить сжатие gzip работать в WCF 4.5
WCF 4.5 поддерживает GZIP без сторонних библиотек или рукописных расширений.
Я получил его работу через TCP Binding, но не могу найти способ заставить его работать через HTTP-привязку.
мой wcf - Служба самостоятельно размещена в службе Windows.
Аддон: мне не разрешено использовать IIS; я не могу переключиться на любую замену WCF.
это работает с gzip:
binding="customBinding" bindingConfiguration="tcpCompressionBinding" name="tcp"
и это то, что я сейчас использую для http:
binding="basicHttpBinding" bindingConfiguration="httpBinding" name="http"
Документация мне действительно не помогает:
http://msdn.microsoft.com/en-us/library/dd456789.aspx.
Но, в соответствии с этим, он должен работать:
Начиная с WCF 4.5, двоичный кодер WCF добавляет поддержку сжатия. Тип сжатия сконфигурирован с использованием свойства CompressionFormat. И клиент, и служба должны настроить свойство CompressionFormat. Сжатие будет работать для протоколов HTTP, HTTPS и TCP. Если клиент указывает на использование сжатия, но служба не поддерживает его, генерируется исключение протокола, указывающее несоответствие протокола. Дополнительные сведения см. В разделе Выбор кодировщика сообщений
Ответы
Ответ 1
В соответствии с запросом я скопировал свой комментарий как ответ:
"Так как это свойство отображается только на binaryMessageEncodingBindingElement, вам нужно будет создать пользовательский чтобы использовать эту функцию:
<customBinding>
<binding name="BinaryCompressionBinding">
<binaryMessageEncoding compressionFormat="GZip"/>
<httpTransport />
</binding>
</customBinding>
и получать сжатые сообщения, и, следовательно, файл сжатия свойство должно быть настроено на элемент binaryMessageEncoding на как клиент, так и сервис. "Как клиент, так и служба должны согласиться отправить