2016-05-24 3 views
1

Я работаю над сжатием gzip в моем WCF. Часть ответов довольно проста с IIS, но я не могу обработать запрос с помощью SoapUI. Причина, по которой я использую SoapUI, заключается в том, что клиентское приложение, которое будет подключаться, не будет использовать стек Microsoft на их конце.Как обрабатывать gzip из SoapUI в WCF?

Я создал образец раствора здесь, чтобы продемонстрировать promlem https://github.com/janmchan/WCFCompression

В решении у меня есть (клиент WCF) WCFServiceDemo (WCF Server) и WCFClient. Используя привязку ниже для клиента и сервера, у меня нет проблем с запросом/ответом.

<bindings> 
    <customBinding> 
    <binding name="myBinding"> 
     <binaryMessageEncoding compressionFormat="GZip"/> 
     <httpTransport decompressionEnabled="True" /> 
    </binding> 
    </customBinding> 
</bindings> 

я получаю следующий заголовок с этим запросом

2016-05-23 11:37;14 : Connection: Keep-Alive 
Content-Length: 298 
Content-Type: application/soap+msbin1+gzip 
Accept-Encoding: gzip, deflate 
Expect: 100-continue 
Host: localhost:19860 

Однако, используя SoapUI с этими настройками

enter image description here

и это сообщение образца

enter image description here

Получаю следующий ответ, который указывает, что тип содержимого неверен. Я попытался добавить заголовки, но это не похоже на решение. Я также попытался добавить модуль для добавления фильтра для сжатия Gzip, но он по-прежнему вызывает ошибку после выхода из всех модулей.

Как я могу убедиться, что и конечный клиент может подключиться к WCF, подобно тому, как SoapUI подключается?

HTTP/1.1 415 Cannot process the message because the content type 'application/soap+xml;charset=UTF-8;action="http://tempuri.org/IService1/GetData"' was not the expected type 'application/soap+msbin1+gzip' Cache-Control: private 
Server: Microsoft-IIS/10.0 
X-AspNet-Version: 4.0.30319 
X-SourceFiles: =?UTF-8?B?YzpcdXNlcnNcamNoYW5cZG9jdW1lbnRzXHZpc3VhbCBzdHVkaW8gMjAxNVxQcm9qZWN0c1xXY2ZTZXJ2aWNlRGVtb1xXY2ZTZXJ2aWNlRGVtb1xTZXJ2aWNlMS5zdmM=?= 
X-Powered-By: ASP.NET 
Date: Tue, 24 May 2016 00:04:19 GMT 
Connection: close 
Content-Length: 0 

ответ

0

После прохождения нескольких вариантов я обнаружил, что лучший способ разрешить это - использовать специальный MessageEncoder. Хотя у меня есть рабочий образец here, у меня все еще есть проблема, когда некоторые заголовки отсутствуют, но по существу, когда это разрешено, это должно быть решением этой проблемы.

Why are the soap headers missing when using Custom MessageEncoder

Смежные вопросы