WCF数据服务 - 客户端代理压缩

时间:2012-04-10 14:52:00

标签: .net http-headers compression wcf-data-services http-compression

我有一个WCF数据服务,我正在尝试启用对IIS压缩的支持。到目前为止,我所获得的最好的是当我尝试以下内容时:

static ServiceReference1.myTestEntities GetEntities()
{
    var content = new ServiceReference1.myTestEntities(new Uri(SERVICE_URL);
    content.IgnoreMissingProperties = true;
    content.SendingRequest += new EventHandler<System.Data.Services.Client.SendingRequestEventArgs>(content_SendingRequest);
    content.Credentials = System.Net.CredentialCache.DefaultCredentials;
    return content;
}

static void content_SendingRequest(object sender, System.Data.Services.Client.SendingRequestEventArgs e)
{
    foreach (var key in e.RequestHeaders.AllKeys)
    {
        if (string.Equals(key, "Accept-Encoding", StringComparison.InvariantCultureIgnoreCase))
        {
            return;
        }
    }
    e.RequestHeaders.Add("Accept-Encoding", "gzip,deflate,sdch");
}

问题在于,虽然它确实添加了accept-encoding标头,但是客户端没有对它进行解压缩,因此它会报错,例如“十六进制值0x1F是无效字符。第1行,位置1”。这基本上意味着客户端没有解压缩返回的流。

我的ServiceReference1是在Visual Studio 2010中使用“添加服务引用”创建的。压缩正在我的服务器上进行测试,使用浏览器测试相同的请求URL并使用Wireshark进行检查。

我找不到客户端代理上的任何设置。因此,我的问题是,如何为客户端代理启用WCF数据服务压缩?

编辑:理想情况下,我正在寻找类似this(适用于Windows Phone 7.5)的内容,但我希望它适用于普通的桌面应用程序。

0 个答案:

没有答案