Чтобы использовать WebClient со сжатым содержимым, я расширил его и изменил стандартный веб-запрос следующим образом:
protected override WebRequest GetWebRequest(Uri address)
{
var req = base.GetWebRequest(address) as HttpWebRequest;
req.AutomaticDecompression = DecompressionMethods.GZip;
return req;
}
Это работает нормально, за исключением того, что теперь событие DownloadProgressChanged не запускается, даже если заголовок Content-Length соответствующим образом установлен сервером (сервер не разбивает ответ на части).
Почему это?
РЕДАКТИРОВАТЬ: На самом деле, событие DownloadProgressChanged срабатывает, но он всегда показывает процент от 0 до завершения загрузки, когда он показывает 100. Что вызывает такое поведение?