браузер завершился успешно, но HttpWebRequest завершился неудачно (тайм-аут) - PullRequest
2 голосов
/ 28 января 2012

Я часто посещаю веб-сайт (новостной сайт). после двух лет успешной работы запрос HttpWebRequest завершается с ошибкой тайм-аута. Сначала я подозреваю, что целевой веб-сайт блокирует мой ip, но я вижу веб-сайт с браузером на этом компьютере, и когда я прослеживаю запрос с помощью Fiddler, он показывает, что он может загрузить страницу за 143 мс. так что с пунктом назначения проблем нет. Затем я попытался установить весь заголовок запроса, который браузер отправлял на веб-сервер, но он все еще имеет проблему и время ожидания. (браузер показывает, что ответ достаточно быстрый (143 мс), и нет причины для ошибки тайм-аута.

ПРИМЕЧАНИЕ: приложение отлично работает на другом компьютере с другим IP-адресом

Может кто-нибудь показать мне трюк?

1 Ответ

2 голосов
/ 03 февраля 2012

После некоторого поиска и игры с Fiddler я обнаружил, что должен отправить запрос с Keep-Alive, в Http 1.1 первый запрос включается с заголовком Keep-Alive, но последующие запросы удаляют этот заголовок, так как он использует такое же соединение для другого запроса. поэтому в моем случае целевой веб-сайт должен иметь заголовок Keep-Alive со всеми запросами, в противном случае он получает таймаут. Я решаю эту проблему с помощью следующего вопроса

C # - Соединение: заголовок keep-alive не отправляется во время HttpWebRequest

...