WebException генерируется всякий раз, когда веб-запрос не может быть успешно выполнен. Например, 400 и 500 серий ответов.
В WebExcpetion есть свойство с именем Status, которое будет возвращать фактический статус ответа, т.е. 500 (Внутренняя ошибка сервера).
Вот список всех кодов ответов: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
=============================================== ================================
В целом:
Код серии 1xx = предварительный ответ. Это не коды ошибок. Например, ответ 100 Continue, который говорит, что клиент должен продолжить выполнение своего запроса. Обычно WebRequest не возвращает такой ответ и обрабатывает его сам, отправляя остальную часть запроса.
Код серии 2xx = Запрос был успешно получен, понят и принят. Это не коды ошибок. Например, 200 OK
Код серии 3xx = Необходимо предпринять дальнейшие действия. Как правило, это не код ошибки (обычно для перенаправления), например, «301 Moved Permanently», что означает, что запрашиваемый ресурс перемещен в новое местоположение, поэтому любые дальнейшие запросы клиента должны быть на новом предоставленном URL в ответ.
ИЛИ «305 Использовать прокси», что, по вашему мнению, приводит к исключению.
Код серии 4xx = ошибки клиента. Это может привести к исключению. например, «400 неверных запросов» или «401 несанкционированных»
код серии 5xx = ошибки сервера. Это может привести к исключению. например, «500 Internal Server Error» или «504 Gateway Timeout»