相关疑难解决方法(0)

WCF GZip压缩请求/响应处理

如何让WCF客户端处理由IIS进行GZip或Defzed的服务器响应?

在IIS上,我按照这里的说明如何使IIS 6 gzip所有响应(其中请求包含"Accept-Encoding:gzip,deflate")由.svc wcf服务发出.

在客户端,我按照这里这里的说明如何将此标头注入Web请求:"Accept-Encoding:gzip,deflate".

Fiddler2显示响应是二进制而不是普通的旧Xml.

客户端崩溃了一个异常,基本上说没有Xml标头,这是真的.

在我的IClientMessageInspector中,应用程序在调用AfterReceiveReply之前崩溃.

进一步说明:

(1)我无法更改WCF服务或客户端,因为它们是由第三方提供的.但是,如果这是正确的方向,我可以通过配置附加行为和/或消息检查器.

(2)我不想压缩/解压缩肥皂体,而是整个消息.

任何想法/解决方案?

*解决了*

无法编写WCF扩展来实现这些目标.相反,我遵循了CodeProject 主张辅助类的文章:

public class CompressibleHttpRequestCreator : IWebRequestCreate
{
    public CompressibleHttpRequestCreator()
    {
    }

    WebRequest IWebRequestCreate.Create(Uri uri)
    {
        HttpWebRequest httpWebRequest = 
            Activator.CreateInstance(typeof(HttpWebRequest),
            BindingFlags.CreateInstance | BindingFlags.Public | 
            BindingFlags.NonPublic | BindingFlags.Instance,
            null, new object[] { uri, null }, null) as HttpWebRequest;

        if (httpWebRequest == null)
        {
            return null;
        }

        httpWebRequest.AutomaticDecompression =DecompressionMethods.GZip | 
            DecompressionMethods.Deflate;

        return httpWebRequest;
    }
} 
Run Code Online (Sandbox Code Playgroud)

此外,还添加了应用程序配置文件:

<configuration>
  <system.net>
    <webRequestModules>
      <remove …
Run Code Online (Sandbox Code Playgroud)

wcf gzip http-headers

24
推荐指数
1
解决办法
2万
查看次数

标签 统计

gzip ×1

http-headers ×1

wcf ×1