Задача. Є System.Net.WebClient. Необхідно звернутися за його допомогою до сервера, причому при зверненні може статись помилка, для прикладу - 500, Internal Server Error.
В обох випадках респонс від сервера треба вивести + якщо стався еррор - припинити виконання.

Довго мучився з тим, як цього добитись - WebClient не має перегружених методів для отримання респонсу, він повертає тільки дані. Більше того, коли статус не починається з 2 - кидає ексепшн, відповідно даних не повертає взагалі.
В кінці рішення виявилось (як завжди) тривіальним - в WebException, який кидає WebClient є всі необхідні дані:
CODE
string response;
bool success;
WebClient webClient = new WebClient();
try
{
    response = webClient.DownloadString("www.google.com");
    success = true;
}
catch (WebException ex)
{
    if (ex.Status == (WebExceptionStatus)500)
    {
        response = new StreamReader(ex.Response.GetResponseStream()).ReadToEnd();
        success = false;
    }
    else
    {
        throw;
    }
}