HTTP request C# .NET?

Использую HTTP request для получения страничек сайтов.

Что-то типа этого:



HttpWebRequest request = WebRequest.Create(Url) as HttpWebRequest;



HttpWebResponse response = request.GetResponse() as HttpWebResponse;

...


Иногда всё работает как часы, но порою бывает так что страничка размером несколько КБ не грузится… просто висит, и в итоге всё сваливается по таймауту.


Внимание! Вопрос:

Почему когда я включаю прозрачный прокси на локалхосте все лаги исчезают? Простой пример такой прокси — fiddler (он же HTTP сниффер).


Если выключаю проксю — эти лаги моментально возвращаются.

  • Вопрос задан
  • 9441 просмотр
Пригласить эксперта
Ответы на вопрос 8
bigbaraboom
@bigbaraboom
Смотрите в чем различие заголовков. Больше тут ничего сказать нельзя.
Ответ написан
bigbaraboom
@bigbaraboom
Тогда только последний вариант это то что прокси — кэширует и поэтому лагов нет. Если ваш прокси прозрачен, то по сути в прямом соеденении или через него разницы нет, остается только кэш.
Ответ написан
Комментировать
@pennanth
Если компилируете (в студии или без), то лаги могут быть из-за файерволла, т.к. он определяет, что новая программа ломится в интернет.

Через прокси — все OK, т.к. прокси-программа все та же самая, и правила файерволл использует те же, что и раньше.
Ответ написан
Комментировать
@vbarhatov
Не возлагайте столь большие надежды на fiddler, он иногда очень странно работает. У меня однажды после нормального завершения fiddler'a перестала работать моя прога, хотя компилил заново и запускал под студией и без нее. Все разрешилось только при последующем запуске фидлера.

А падение по таймауту нормально. Все равно эти эксепшны нужно ловить, и отправлять запрос повторно. Только не делайте бесконечный цикл, все равно нужно ограничивать количество попыток подключения.
Ответ написан
mxc
@mxc
У меня была подобная проблема, после 2 дней разборов оказалось что нарушена некая последовательность запросов, т.е. перед выполнением нужного Request'a было необходимо ещё выполнить пустой POST на некую страничку.
Ответ написан
Комментировать
verych
@verych Автор вопроса
Скомпилил в релиз.
Создал правило для Фаервола.
Ничего не помогло.
Всё также всё прекрасно работает со вклюсеным фиддлером, и всё так же таймаутит без него.

Прокси не кэширует, это по сути сниффер, ему кэшировать ни к чему.

ЗЫ
Проверял на 3-х компах (рабочий, домашний, удаленный сервер за кордоном)

Может проблемма в самом HttpWebRequest?
Ответ написан
verych
@verych Автор вопроса
Точно нет.
Это исключено фактами проверок в 3-х разны местах.
Да и вообще никогда не замечал косяков.
Ответ написан
Комментировать
@lavel
Если происходит большое количество запросов, то возможно есть проблема в транспортном уровне. По умолчанию для приложение доступно 2 физических подключения (если Windows 7 или 2008 R2 — можно увидеть их в ресурс-мониторе). Решается это установкой в конфиге или в коде ServicePoint.ConnectionLimit
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы