我有一个 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),但我希望它用于普通的桌面应用程序。