Какие конкретные коды состояния вызывают исключение WebException с помощью HttpWebRequest.GetResponse()?

Я искал определенную документацию по этому вопросу, но мне не повезло найти какую-либо.

Для каких кодов статуса ответа HTTP будет HttpWebRequest.GetResponse() генерировать WebException после выполнения чего-то вроде POST?

В частности, будет ли он генерировать WebException для чего-либо кроме статуса 200 OK? Или это будет только генерировать WebException скажем, 400, 404 и 500 (ради аргумента)?

Я хочу знать, так как сервер, с которым я общаюсь, определяет что-то кроме HTTP 200 OK возвращаясь как условие ошибки. Могу ли я положиться на WebException генерируется для чего-либо, кроме 200?

В настоящее время я написал свой код, чтобы каждый раз проверять код возврата и убедиться, что он 200 OK, Если это не так, он предпримет соответствующие действия, но между этим кодом и блоком catch возникает много дубликатов. WebException что я надеюсь навести порядок.

Любые соответствующие ссылки на документацию будут приветствоваться.

3 ответа

Закончилось делать явную проверку после ответа, ловить и проверять исключения WebException; приводит к некоторому дублированию кода, но нет однозначного ответа о том, будет ли ВСЕГДА возникать исключение WebException, если статус НЕ 200.

Я думаю, что так и будет, но это звучит как рискованное предположение. С одной стороны, документы MSDN дают понять, что GetResponse бросит исключения, кроме просто WebException, Тем не менее, я могу с уверенностью сказать, что ответ "304 Не модифицированный" будет брошен как WebException,

Все эти разговоры испускают странный запах кода; не используйте исключения для управления потоком выполнения. Вам лучше обрабатывать исключения соответствующим образом, а затем явно проверять StatusCode свойство для ваших допустимых значений.

Система WebException является отдельной системой от системы ошибок HTTP. Это происходит главным образом потому, что ошибки HTTP возвращаются браузером или клиентом, а WebException генерируется сервером при создании вашей страницы. К тому времени, когда будет обнаружена ошибка HTTP, страница будет отправлена ​​клиенту, и вы об этом не узнаете.

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