Всегда ли HttpWebRequest.GetResponse() генерирует исключение WebException, если сервер возвращает что-либо, кроме 200?
Всегда ли HttpWebRequest.GetResponse() генерирует исключение WebException, если сервер возвращает что-либо, кроме 200?
Я видел этот вопрос, но ответы не были окончательными.
1 ответ
Нет, WebException будет выдаваться только в определенных условиях, в основном из-за тайм-аутов и ошибок при обработке запроса.
Вот документация для HttpWebRequest.GetResponse ():
https://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.getresponse(v=vs.110).aspx
Обратите внимание, что существует три основных причины, по которым будет генерироваться исключение WebException:
Abort was previously called.
-or-
The time-out period for the request expired.
-or-
An error occurred while processing the request.
Два нижних являются наиболее распространенными, и вы увидите 400 из них наиболее часто. В документации есть хорошая рекомендация, с помощью которой вы можете попытаться диагностировать точную причину проблемы:
Если выброшено исключение WebException, используйте свойства Response и Status исключения, чтобы определить ответ от сервера.
Если вы используете IDE (Visual Studio), где вы можете разместить точку останова, проверьте ответ и статус. Если нет, используйте Console.Writeline(), чтобы распечатать ответ или код состояния и начать расследование оттуда.