Dlaczego HttpWebRequest rzuca wyjątek zamiast zwracać HttpStatusCode.NotFound?
Usiłuję zweryfikować istnienie Url przy użyciu HttpWebRequest. Znalazłem kilka przykładów, które zasadniczo to robią:
<code>HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(Url); request.Method = "HEAD"; using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) { return response.StatusCode; } </code>
Jeśli jednak adres URL jest rzeczywiście uszkodzony, to nie zwraca odpowiedzi, zamiast tego rzuca wyjątek.
Zmodyfikowałem mój kod do tego:
<code>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; } </code>
który wydaje się w końcu robić to, co chcę.
Ale chciałbym wiedzieć, dlaczego żądanie zgłasza wyjątek zamiast zwracać odpowiedź z kodem stanu NotFound?