如何在WCF中处理来自SoapUI的gzip压缩?

3
我正在进行WCF的双向gzip压缩。使用IIS处理响应部分相当容易,但是我似乎无法处理使用SoapUI的请求。我使用SoapUI的原因是将连接的客户端应用程序不会在其端使用Microsoft堆栈。
我创建了一个示例解决方案,以演示问题 https://github.com/janmchan/WCFCompression 在该解决方案中,我有一个WCFServiceDemo(WCF服务器)和WCFClient(WCF客户端)。对于客户端/服务器,使用以下绑定,我没有任何请求/响应问题。
<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
1个回答

0

经过多次尝试,我发现解决这个问题的最佳方法是使用自定义的MessageEncoder。虽然我已经有一个工作样例在这里,但我仍然存在一个问题,就是一些头文件丢失了,但本质上当这个问题得到解决时,它应该是解决这个问题的方案。

为什么使用自定义MessageEncoder时SOAP头部会丢失


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接