Правилна корекция за забавяне на HttpWebRequest GetResponse при първа заявка

Както бе споменато преди тук Защо този код на WebRequest е бавен? и тук Забавяне на HttpWebRequest GetResponse на 64-битов Windows

HttpWebRequest увисва при първата заявка поради автоматично откриване на прокси. Поправка е да зададете Proxy = null, но това също заключва всички потребители, които използват прокси и това не е правилното решение.

И така, някой знае ли как това първоначално забавяне може да бъде коригирано програмно, без да се блокират всички прокси потребители?


person christophrus    schedule 17.03.2013    source източник


Отговори (4)


Можете първо да опитате/хванете повикване с прокси, зададено на нула, и със зададено автоматично откриване на прокси в случай на неуспех.

person Martin Komischke    schedule 17.03.2013

Имах подобен проблем с извикване на Elasticsearch от ASP.NET (C#), когато правя първа заявка на http://localhost:9200 с GetResponse и GetRequestStream и имах 20 секунди забавяне.

Причината за моя проблем е в IPv6. Решението за моя случай е да коментирате дефиницията за IPv6 адреса за localhost:

Отидете в папката "C:\Windows\system32\drivers\etc\".

Направете резервно копие на файла "hosts".

Редактирайте файла, за да промените реда:

::1 localhost

to

#::1 localhost

Можете също така да промените реда:

#127.0.0.1 localhost

to

127.0.0.1 localhost

Може би можете да изчистите DNS кеша: стартирайте командния ред като администратор, в командния прозорец въведете и след това натиснете enter: ipconfig /flushdns

Преди това опитах много решения, които намерих в интернет, но нищо не помогна за моя случай, напр.:

  1. request.Proxy = нула;
  2. ServicePointManager.UseNagleAlgorithm = невярно
  3. различни промени в web.config ...
person Stanislav Prusac    schedule 07.10.2013
comment
В моя случай разрешаването на заявка (DNS) на localhost с активен IPv6 във файла hosts води до забавяне при първа заявка. Опитахте ли това? Това не е само моят случай, можете да намерите подобен проблем [stackoverflow.com/questions /1416128/ , но никой не свързва проблема с GetResponse и GetRequestStream с това решение. - person Stanislav Prusac; 08.10.2013
comment
Но поисках правилна корекция, която може да бъде направена програмно ... предполагам, че не е добра идея да оставя моята програма да променя потребителския хост файл, нали? - person christophrus; 08.10.2013

Един от начините е да помолите потребителите да изключат автоматичното откриване на прокси в опциите на Internet Explorer.

person alex    schedule 17.03.2013

това, което ми помогна, беше да изключим „Автоматично откриване на настройки“ в LAN настройките на Internet Explorer. Нищо друго не работи, включително пренаписване на кода, за да се използва HttpClient вместо HttpWebRequest.

person Tomislav Kralj    schedule 15.09.2018