Рассмотрим следующий URL: "http://www.bestbuy.com". Этот ресурс быстро и корректно загружается во все браузеры и из всех мест.
Однако базовый код C # в настоящее время зависает (заканчивается тайм-аутом для любого тайм-аута) для этого URL:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
var req = WebRequest.CreateHttp("http://www.bestbuy.com");
req.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
req.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36";
req.Timeout = 30000; // you can set any timeout
using (var resp = (HttpWebResponse)req.GetResponse()) // stucks and finally ends by timeout here
{
Console.WriteLine(resp.StatusCode);
Console.WriteLine(resp.ResponseUri.AbsoluteUri);
}
Fiddle: https://dotnetfiddle.net/M7NZgG
Этот же код отлично работает для большинства других URL.
Пробовал разные вещи, но все они сделалине помогает:
- прямая загрузка версии HTTPS ("https://www.bestbuy.com")
- удалить вызовы для установщиков UserAgent, AutomaticDecompression и SecurityProtocol
класс HttpClient также зависаети заканчивается таймаутом для этого ресурса.
В Fiddler ответ быстро возвращается, но выглядит странно - он совершенно пустой: