Мне пришлось открыть для этого заявку в службу поддержки MSDN, но я получил ответ.
Ответ здесь - простое клиентское решение. Мой предыдущий метод WebRequest выглядел так:
protected override WebRequest GetWebRequest(Uri uri)
{
var request = base.GetWebRequest(uri);
request.Headers.Add("Accept-Encoding", "gzip");
return request;
}
Лучший способ это:
protected override WebRequest GetWebRequest(Uri uri)
{
var request = (HttpWebRequest) base.GetWebRequest(uri);
request.AutomaticDecompression = DecompressionMethods.GZip;
return request;
}
Я не совсем уверен, почему это работает: заголовки запроса и ответа в точности совпадают, но клиент, похоже, может управлять ответом, который он получает.
Похоже, что это работает как с IIS6, так и с IIS7, хотя ответ IIS6 разделен на части, а ответ IIS7 - нет. Если кто-то может помочь объяснить, почему это работает, это может быть полезно для сообщества.