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