HttpWebRequest를 사용하여 URL의 존재를 확인하려고합니다. URL이 참으로 깨진 경우, 그것은 응답을 반환하지 않는 것HttpWebRequest가 HttpStatusCode.NotFound를 반환하는 대신 예외를 throw하는 이유는 무엇입니까?
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(Url);
request.Method = "HEAD";
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
return response.StatusCode;
}
, 대신 예외를 던지고 : 나는 몇 기본적으로이 할 사례를 발견했다. 마지막으로 내가 원하는 것을 할 것 같다
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 상태 코드를 사용하여 응답을 반환하는 대신 요청이 예외를 던지는 이유는 무엇입니까?
.Net Framework 작성자의 부분에서 잘못된 디자인을 선택하여 HttpWebRequest/Response를 사용하여 코드를 저장하는 작업이 가장 적지 만 올바른 해결 방법은 4xx 및 5xx 상태 코드를 throw하지 않는 HttpClient를 사용하는 것입니다. 예외는 예외적 인 상황을위한 것이고 그것을 잡으려고 던지면서 퍼포먼스에 좋지 않은 것처럼 진행됩니다. 특히 퍼펙트를 완전히 피하는 더 좋은 옵션이있는 경우에는 예외입니다. https://msdn.microsoft.com/en-us/library/hh138242(v=vs.118).aspx –
이 사실이 아닌 것으로 보입니다. 프로젝트에서 HttpClient를 사용 중이고 404 상태 코드를 반환하는 존재하지 않는 url을 호출 할 때 클라이언트는 404 상태 코드와 함께 응답을 반환하는 대신 예외를 throw합니다. 이것을 막기 위해 httpclient를 사용하는 추가 단계가 있습니까? – SelAromDotNet