Httpwebreqest работает с Fiddler On, иначе тайм-аут

Я получаю странную ошибку. Я настроил скрипт, который отлично работает, когда Fiddler открыт — он загружает отчет с веб-сайта, используя httpwebrequest, и все работает нормально!

ОДНАКО это работает только при открытом Fiddler? Когда скрипач не работает, я просто получаю «Проблему с тайм-аутом запроса».

Кто-нибудь знает, как это исправить и заставить его работать с моим приложением ASP.NET MVC?

Спасибо

Изменить: Спасибо за ответ! Что касается прокси — я хотел протестировать этот скрипт на Windows Azure — так немного запутался, как настроить параметры прокси по умолчанию?


person Community    schedule 23.06.2009    source источник
comment
Я слышал, как несколько человек сообщают о том, что они сталкиваются с такими проблемами: в основном Fiddler увеличивает производительность загрузки по сравнению с некоторыми распространенными конфигурациями клиентов. Как правило, если вы не можете настроить клиентское программное обеспечение (например, изменить размер буфера загрузки), лучше всего увеличить время ожидания на сервере, чтобы обеспечить более длительный период перед загрузкой. Что касается почему Fiddler помогает в этом сценарии, Fiddler буферизует запросы по умолчанию, поэтому ваше приложение отправляет полный запрос в Fiddler, который собирает все это, ЗАТЕМ устанавливает соединение с сервером и передает данные на сервер как можно быстрее.   -  person EricLaw    schedule 30.07.2009


Ответы (6)


Для искателей, вот еще одна мысль. У меня есть приложение, которое управляет моим сайтом роботизированным способом. Приложение использует HttpWebRequest и HttpWebResponse в .Net 4.0. После двух или трех успешных GET следующий будет постоянно блокироваться. В другом сообщении говорилось, что неправильное закрытие HINTERNET может привести к блокировке приложения при последующем GET на тот же хост из-за ограничения на количество параллельных подключений к одному и тому же хосту. Я не знаю, происходит ли это под одеялом, но я подумал, что вернусь и решу, где я могу закрыть вещи.

Я закрыл все свои объекты HttpWebResponse в коде, и моя проблема исчезла. Из этого я не понимаю, почему Fiddler скрывал проблему, но это было так. Прежде чем добавлять закрытия, определенный запрос в последовательности будет постоянно истекать по тайм-ауту. После закрытия ответов все прояснилось, и я мог работать без проксирования через Fiddler.

person ProfVonLemongargle    schedule 01.04.2011
comment
Да, это была моя проблема. Так просто, он постоянно терпел неудачу после 2 запросов. Спасибо проф! - person TDH; 09.05.2012
comment
Я также могу подтвердить - простой response.Close(); исправил мою проблему. - person Anders; 12.10.2014
comment
Я также хотел бы поблагодарить за этот пост (4 года спустя!), поскольку это также относится к объектам Powershell3 и System.Net.WebRequest, которые не очищаются, когда они выходят за рамки; поэтому мне пришлось добавить вызов [System.Net.WebRequest].abort(), прежде чем выйти за пределы области действия и во всех блоках try/catch. - person JonnyG; 31.03.2015

Закрытие всех объектов HttpWebRequest, как предложил @ProfVonLemongargle, устранило ту же проблему, что и у меня.

Fiddler, скорее всего, закрывает подключения к серверу, поэтому ограничение одновременного подключения маскируется, когда ваше приложение использует его в качестве прокси. Дополнительную информацию см. в этой ветке: HttpWebRequest истекает при втором вызове

person Gloopy    schedule 20.04.2012

Имейте в виду, что Fiddler действует как прокси. Наличие приложения, работающего при запущенном Fiddler, может указывать на проблему с настройкой прокси-сервера по умолчанию. Откройте «Свойства обозревателя» (возможно, через IE) и проверьте настройки прокси-сервера. В частности, обратите внимание, выполняете ли вы настройку с помощью сценария.

Я упомяну одну очень маловероятную возможность, хотя она действительно произошла со мной. На моем компьютере был установлен определенный антивирусный продукт. По какой-то причине он подумал, что срок действия моей подписки истек. В результате программное обеспечение не запускалось и, следовательно, не могло обновить список программ, которым разрешен доступ в Интернет. Программы, которые я установил после истечения срока действия, не будут работать, если не запущен Fiddler (поскольку Fiddler был установлен до истечения срока действия, он был в списке «Хорошо»). Любая другая программа, установленная после истечения срока действия, была в списке «Плохих» (по умолчанию).

person John Saunders    schedule 23.06.2009
comment
Спасибо за ответ! Что касается прокси — я хотел протестировать этот скрипт на Windows Azure — так немного запутался, как настроить параметры прокси по умолчанию? - person ; 23.06.2009
comment
Он уже работает в вашей обычной системе Windows? Сделайте это, прежде чем заняться Azure. - person John Saunders; 23.06.2009

Вы работаете с HTTPS? Если это так, ваш код может не доверять сертификату удаленного сайта, и Fiddler может передавать данные вашему приложению. Отправьте нам сообщение об ошибке и минимальное количество кода, воспроизводящего эту проблему.

person Dave Markle    schedule 23.06.2009
comment
Привет, Дэйв, да, работает с HTTPS. Хотя я не на своем ПК, где код (на работе), есть идеи (если это так), как исправить эту проблему? - person ; 23.06.2009
comment
Взгляните на msdn.microsoft.com/en- нас/библиотека/. Вам, вероятно, потребуется указать коду принять сертификат сайта, с которым вы разговариваете. - person Dave Markle; 24.06.2009
comment
Fiddler покажет модальное диалоговое окно с предупреждением, если сайт представляет неправильный сертификат, поэтому я не думаю, что это то, с чем сталкивается этот пользователь. - person EricLaw; 30.07.2009

более старая цепочка, но я обнаружил ту же проблему в нашем коде. Это произошло потому, что в javascript остались оставшиеся команды console.log. Это привело к блокировке кода JavaScript.

person Nicholas Lim    schedule 25.04.2012

Была такая же проблема в корпоративной сети, я открыл Fiddler2, чтобы диагностировать, что было отправлено/получено, и проблема исчезла! После дальнейших исследований я обнаружил, что Fiddler туннелирует трафик через него как прокси-сервер, а моя корпоративная сеть также использует сценарий автоматической настройки для прокси-сервера (я предполагаю, что Fiddler туннелировал его через соответствующий системный прокси-сервер, о котором мое приложение не знало)

Чтобы запустить мою программу VB.net, все, что мне нужно было сделать, это добавить параметры прокси в запрос:

Dim proxy = WebRequest.GetSystemWebProxy()
oRequest.Proxy = proxy
person bfritz    schedule 20.01.2015