Всегда ли 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(), чтобы распечатать ответ или код состояния и начать расследование оттуда.

Другие вопросы по тегам