Httpwebreqest работает с Fiddler On в противном случае Timeout - PullRequest
17 голосов
/ 23 июня 2009

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

ОДНАКО это работает только когда Fiddler открыт? Когда fiddler не работает, я просто получаю «Request Timeout Issue»

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

Спасибо

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

Ответы [ 6 ]

12 голосов
/ 01 апреля 2011

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

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

3 голосов
/ 20 апреля 2012

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

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

2 голосов
/ 23 июня 2009

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

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

1 голос
/ 25 апреля 2012

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

1 голос
/ 23 июня 2009

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

0 голосов
/ 20 января 2015

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

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

Dim proxy = WebRequest.GetSystemWebProxy()
oRequest.Proxy = proxy
...