C#でHttpWebRequest,HttpWebResponseあたり使ってHTTP通信したときWebサーバが 500 Internal Server Error など返してくるとWebExceptionが発生しますが、このときのステータスコード(500)を取りたいときは以下のようにします。
try {
…
} catch (WebException e) {
statusCode = (int)((HttpWebResponse)e.Response).StatusCode;
}
ちなみにWebサーバー落ちてるときも同様にWebException発生しますがe.Response==nullなのでnullチェックは入れておいた方がいいと思います。