【问题标题】:How to compress WCF 3.5 response & use WCF service in WPF application如何压缩 WCF 3.5 响应并在 WPF 应用程序中使用 WCF 服务
【发布时间】:2013-06-02 06:18:51
【问题描述】:

我想从 WCF 3.5 服务发送压缩数据作为响应并访问 WPF 应用程序中的响应。 我在 IIS 上托管了 WCF 应用程序并实现了 IIS 压缩以向客户端发送压缩响应。 我通过参考以下链接实现了 iis 压缩

http://www.hanselman.com/blog/EnablingDynamicCompressionGzipDeflateForWCFDataFeedsODataAndOtherCustomServicesInIIS7.aspx

当我在 MVC 中访问 WCF 服务时,压缩工作正常 应用。但是当我尝试在 WPF 中访问相同的 WCF 服务时 显示服务响应未压缩的应用程序 Fiddler。

请帮我解决这个问题。

【问题讨论】:

  • 能否请您提供您的 web.config 和 app.config 的相关部分。此外,在这两种情况下(MVC 与 WPF)发送到服务器的标头有什么区别?
  • 在 MVC 和 WPF 应用程序中,我们在配置文件中添加了以下绑定设置
  • 在 MVC 和 WPF(Windows) 应用程序中,我们在配置文件中添加了以下绑定设置

标签: wpf wcf


【解决方案1】:

在 MVC 和 WPF(Windows) 应用程序中,我们在配置文件中添加了以下绑定设置

<basicHttpBinding>
        <binding  name="EndPointHTTP" closeTimeout="00:59:00" openTimeout="00:59:00" receiveTimeout="00:59:00" sendTimeout="00:59:00"
                 allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="2147483647"
                 maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"
                 messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
          <readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647"
                        maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
          <security mode="None">

          </security>
        </binding>
      </basicHttpBinding>

<client>
      <endpoint address="http://ntvmsynrpt0389/SynergyLiteServicetInternet/SystemAdmin/SystemAdminService.svc"
          binding="basicHttpBinding" bindingConfiguration="EndPointHTTP"
          contract="ISystemAdmin" name="SystemAdminServiceEndpoint" behaviorConfiguration="CallContextEndpointBehavior">
      </endpoint>
 </client>  

我们在 MVC 中得到了标题
请求头

POST /SynergyAfricaServices/SystemAdmin/SystemAdminService.svc HTTP/1.1 内容类型:application/soap+xml; charset=utf-8 主机: ntvmsynrpt0389.fps.nihilent.com 内容长度:4132 预期: 100-继续接受编码:gzip,放气

响应头

HTTP/1.1 200 OK 内容类型:application/soap+xml;字符集=utf-8 内容编码:gzip 变化:接受编码服务器:Microsoft-IIS/7.5 X-Powered-By:ASP.NET 日期:2013 年 6 月 5 日星期三 12:44:18 GMT 内容长度:1179

对于 WPF 应用程序,我们得到 fidder 输出为 请求头

POST /SynergyLiteServicetInternet/Common/InfrastructureService.svc HTTP/1.1 内容类型:text/xml;字符集=utf-8 VsDebuggerCausalityData: uIDPo93vMvxA6GNCkVCT0f7hH3cAAAAASYZ0KzDZuUqLJNzHwK2nZidcwKk9ROFEsMvZpKu5Rw0ACQAA SOAPAction:“http://tempuri.org/IInfrastructure/LoadMenus”主机: ntvmsynrpt0389 内容长度:965 预期:100-继续

响应头

HTTP/1.1 200 OK 缓存控制:私有内容长度:72001 内容类型:文本/xml; charset=utf-8 服务器:Microsoft-IIS/7.5 X-AspNet-版本:4.0.30319 X-Powered-By:ASP.NET 日期:6 月 7 日,星期五 格林威治标准时间 2013 年 06:14:51

【讨论】:

    【解决方案2】:

    第二组请求标头缺少 Accept-Encoding:gzip、deflate。请关注this SO link 注入相应的标头。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-20
      • 2012-03-16
      • 1970-01-01
      • 2013-09-30
      • 2018-05-23
      • 1970-01-01
      • 1970-01-01
      • 2012-01-23
      相关资源
      最近更新 更多