왜 WebExceptionStatus.ProtocolError가 생성되지 않습니까? 대신 나는 WebExceptionStatus.UnknownError
이됩니다. 잘못된 URL로 인해 400 또는 404 코드 대신 UnknownError가 발생하는 이유는 무엇입니까? WebException
string url = "http://www.ogggle.com/"; // a bad url
var request = (HttpWebRequest) WebRequest.Create(url);
은 ... 옵션 설정은 이제 WebException이 발생합니다
using (var response = (HttpWebResponse) request.GetResponse())
{
foreach (Cookie cookie in response.Cookies)
cookies.Add(cookie);
string urlContent = "";
using (var sr = new StreamReader(response.GetResponseStream()))
urlContent = sr.ReadToEnd();
return urlContent;
}
을 ellided; 그러나 WebExceptionStatus는 실제로 UnknownError입니다. 나는 ProtocolError를 기대하고 있습니다.
catch (WebException we)
{
string message = "WEB EXCEPTION DETECTED. Retry counter: " + _retryCount;
message += Environment.NewLine + "Problem with url: " + url + ". Status is: " + we.Status;
message += Environment.NewLine + "Message is: " + we.Message;
if (we.Status == WebExceptionStatus.ProtocolError)
{
message += Environment.NewLine + string.Format("Status Code : {0}", ((HttpWebResponse)we.Response).StatusCode);
message += Environment.NewLine + string.Format("Status Description : {0}", ((HttpWebResponse)we.Response).StatusDescription);
}
WriteToErrorLog(message);
if (DEBUG)
Console.WriteLine(message);
_retryCount++;
}
내 생각에 WebException
은 이보다 더 똑똑해야합니다. 형식이 잘못되었거나 잘못된 URL은 의미있는 WebExceptionStatus가됩니다. 대신 도움이되지 않는 UnknownError가 발생합니다. 아무도 내가 URL을 나쁜 때 WebException
의미를 얻는 방법을 이해하는 데 도움이 될 수 있습니까?
HTTP 상태 코드는 HTTP 응답에서 가져옵니다. URL을 호스트 이름으로 구문 분석 할 수 없으면 HTTP 응답이 없습니다. – SLaks
응답을 읽으려고 했습니까? var resp = new StreamReader (we.Response.GetResponseStream()). ReadToEnd();'? 어쩌면 도움이 될지도 모른다. –
URL을 구문 분석 할 수있는 URL로 변경하여 수정했습니다. – sapbucket