Почему HttpWebRequest генерирует исключение вместо возврата HttpStatusCode.NotFound?

Я пытаюсь проверить существование URL-адреса с помощью HttpWebRequest. Я нашел несколько примеров, которые делают в основном это:

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(Url);
request.Method = "HEAD";
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
    return response.StatusCode;
}

Однако, если URL-адрес действительно не работает, он не возвращает ответ, вместо этого генерируется исключение.

Я изменил свой код на этот :

try
{
    HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(Url);
    request.Method = "HEAD";
    using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
    {
        return response.StatusCode;
    }
}
catch (System.Net.WebException ex)
{
    var response = ex.Response as HttpWebResponse;
    return response == null ? HttpStatusCode.InternalServerError : response.StatusCode;
}

, который, кажется, наконец делает то, что я хочу.

Но я хотел бы знать, почему запрос генерирует исключение, а не возвращает ответ с кодом состояния NotFound?

37
задан SelAromDotNet 10 April 2012 в 00:53
поделиться