我创建了使用Web API 2.2在Windows Server 2008 R2机器上运行IIS 7.5上一个REST Web服务。 说我遇到的问题是,Web服务返回一个压缩的响应(内容编码:gzip)当我提出通过谷歌Chrome邮差应用程序的请求。 但是,当我让使用.NET 4.5.1 HttpClient的相同的请求,服务器不返回压缩响应(在Content-Encoding头为空)。 这里是我的C#代码:
var handler = new HttpClientHandler();
handler.UseProxy = false;
handler.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
handler.Credentials = CredentialCache.DefaultNetworkCredentials;
var client = new HttpClient(handler);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.AcceptCharset.Add(new StringWithQualityHeaderValue("utf-8"));
client.DefaultRequestHeaders.AcceptLanguage.Add(new StringWithQualityHeaderValue("en-US"));
client.DefaultRequestHeaders.CacheControl = new CacheControlHeaderValue { NoCache = true };
client.DefaultRequestHeaders.Connection.Add("keep-alive");
var response = await client.GetAsync("https://localhost/mywebsite");
注:我使用的是SSL连接。 我可以确认Web API Web服务正在接收Accept-Encoding: gzip
同时从邮差应用程序请求和HttpClient的请求头。 事实上,请求头正是上是相同的,不同之处在于Connection: keep-alive
头似乎是从HttpClient的要求剥离。 有没有人有任何想法,为什么Web服务将不会投放到HttpClient的一个压缩的响应?