System.Net.WebClient неоправданно медленно

При использовании метода System.Net.WebClient.DownloadData () я получаю необоснованно медленное время отклика.

При получении URL-адреса с использованием класса WebClient в .NET требуется около 10 секунд, прежде чем я получаю ответ, в то время как та же страница загружается моим браузером менее чем за 1 секунду. И это с данными размером 0,5 кБ или меньше.

Запрос включает параметры POST / GET и заголовок пользовательского агента, если это может вызвать проблемы.

Я (пока) не пробовал, если другие способы загрузки данных в .NET вызывали бы те же проблемы, но я подозреваю, что мог бы получить аналогичные результаты. (У меня всегда было чувство, что веб-запросы в .NET необычайно медленные ...)

Что может быть причиной этого?

Редактировать:
Я попытался сделать то же самое, используя System.Net.HttpWebRequest, используя следующий метод, и все запросы заканчиваются менее чем за 1 секунду.

public static string DownloadText(string url)
        var request = (HttpWebRequest)WebRequest.Create(url);
        var response = (HttpWebResponse)request.GetResponse();

        using (var reader = new StreamReader(response.GetResponseStream()))
        {
            return reader.ReadToEnd();
        }
}


В то время как этот (старый) метод с использованием System.Net.WebClient занимает 15-30 секунд для каждого запроса на завершение:

public static string DownloadText(string url)
{
       var client = new WebClient();
       byte[] data = client.DownloadData(url);
       return client.Encoding.GetString(data);
}

40
задан yaitloutou 4 December 2016 в 23:44
поделиться