실패한 것으로 예상되는 대상 서버 집합에 도달하지 못한 다운로드 시도 만 재 시도하려고합니다. 다른 실패한 시도를 다시 시도하는 것은 각 요청에 대해 nonce가 증가하기 때문에 시간 낭비 일뿐입니다.다시 시도 작업이 시간 초과되었거나 예기치 않게 연결이 닫혔습니다.
이 설명 된대로 아마 일하는 것이 내 간단한 다운로드 방법 :
public string Download(string url)
{
bool retried = false;
retry:
try
{
HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create(url);
using (StreamReader reader = new StreamReader(webrequest.GetResponse().GetResponseStream()))
{
return reader.ReadToEnd();
}
}
catch (WebException e)
{
if (e.Message == "The operation has timed out" || e.Message == "The connection was closed unexpectedly")
{
if (!retried)
{
retried = true;
goto retry;
}
}
}
return "";
}
문제가 e.Message가 localizated된다는 점이다. 따라서 if (e.Message == "language 1" || e.Message == "language 2" || e.Message == "language 3" || ...)
을 사용해야합니다.
The operation has timed out
또는 The connection was closed unexpectedly
에서만 다시 시도하는 더 세련된 방법이 있습니까? 또는 아직 대상 서버에 도달하지 않았을 가능성이있는 요청에 대해서만 다시 시도 하시겠습니까? 감사! 경우
내가 당신에게 당신이 필요로하는 정보를 제공 할 것'HResult' 또는 WebException이 객체의'Status' 속성 중 하나를 기대 값. –
유망 해 보입니다. 나는 그것을 시험 할 것이다. 제안에 감사드립니다. – LukAss741