Как заставить работать сжатие gzip в WCF 4.5
WCF 4.5 поддерживает GZIP без сторонних библиотек или рукописных расширений. Я получил его через TCP Binding, но не могу найти способ заставить его работать через HTTP Binding. мой 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 ответ
Согласно запросу я скопировал свой комментарий как ответ:
"Поскольку это свойство доступно только для двоичного объекта MessageEncodingBindingElement, вам необходимо создать пользовательскую привязку, подобную следующей, чтобы использовать эту функцию:
<customBinding>
<binding name="BinaryCompressionBinding">
<binaryMessageEncoding compressionFormat="GZip"/>
<httpTransport />
</binding>
</customBinding>
и получать сжатые сообщения, и поэтому свойство ressionFormat должно быть настроено в элементе binaryMessageEncoding как на клиенте, так и на сервисе. "И клиент, и служба должны согласиться отправить