2

我有一个 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");
}

问题是,虽然它确实添加了接受编码标头,但客户端并未解压缩回复,因此它会抱怨诸如“十六进制值 0x1F 是无效字符。第 1 行,位置 1”之类的错误。这基本上意味着客户端没有解压缩返回的流。

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

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

编辑:理想情况下,我正在寻找这样的东西适用于 Windows Phone 7.5),但我希望它用于普通的桌面应用程序。

4

0 回答 0