Сведения о вопросе

ЧОВИД

21:48, 22nd August, 2020

Теги

HTTP request C# .NET?

Просмотров: 347   Ответов: 8

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

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



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



HttpWebResponse response = request.GetResponse() as HttpWebResponse;

...


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


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

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


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



  Сведения об ответе

SILA

06:02, 6th August, 2020

Смотрите в чем различие заголовков. Больше тут ничего сказать нельзя.


  Сведения об ответе

LIZA

11:26, 21st August, 2020

Тогда только последний вариант это то что прокси — кэширует и поэтому лагов нет. Если ваш прокси прозрачен, то по сути в прямом соеденении или через него разницы нет, остается только кэш.


  Сведения об ответе

nYU

00:13, 23rd August, 2020

Если компилируете (в студии или без), то лаги могут быть из-за файерволла, т.к. он определяет, что новая программа ломится в интернет.

Через прокси — все OK, т.к. прокси-программа все та же самая, и правила файерволл использует те же, что и раньше.


  Сведения об ответе

PHPH

14:04, 23rd August, 2020

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

А падение по таймауту нормально. Все равно эти эксепшны нужно ловить, и отправлять запрос повторно. Только не делайте бесконечный цикл, все равно нужно ограничивать количество попыток подключения.


  Сведения об ответе

LAST

20:12, 7th August, 2020

У меня была подобная проблема, после 2 дней разборов оказалось что нарушена некая последовательность запросов, т.е. перед выполнением нужного Request'a было необходимо ещё выполнить пустой POST на некую страничку.


  Сведения об ответе

SKY

16:16, 4th August, 2020

Скомпилил в релиз.
Создал правило для Фаервола.
Ничего не помогло.
Всё также всё прекрасно работает со вклюсеным фиддлером, и всё так же таймаутит без него.

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

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

Может проблемма в самом HttpWebRequest?


  Сведения об ответе

SILA

09:45, 28th August, 2020

Точно нет.
Это исключено фактами проверок в 3-х разны местах.
Да и вообще никогда не замечал косяков.


  Сведения об ответе

PHPH

21:06, 1st October, 2020

Если происходит большое количество запросов, то возможно есть проблема в транспортном уровне. По умолчанию для приложение доступно 2 физических подключения (если Windows 7 или 2008 R2 — можно увидеть их в ресурс-мониторе). Решается это установкой в конфиге или в коде ServicePoint.ConnectionLimit


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться