안녕하세요 여러분, 항상 url 소스를 반환하는 메소드를 만들려고합니다. 예를 들어 인터넷이 작동하지 않으면 URL 소스가 반환 될 때까지 계속 작동하고 다른 경우는 계속됩니다. 발생합니다. 지금까지 내 방법으로 인터넷을 "끄고"다시 켜는 절차는 normaly를 계속합니다 하지만 시간 초과가 발생하고 인스턴트 메시지가 "falling"루프에있을 때 문제가 발생했습니다 while (true) 올바른 접근 방식이 아니라 내 테스트를 위해 사용하고 있습니다.Webrequest cant "escape"timeout
그래서 어떻게 시간 초과 예외를 건너 뛰고 내 방법을 "다시 시도"할 수 있습니까? 참고
public static async Task<string> GetUrlSource(string url)
{
string source = "";
while (true)
{
HttpWebRequest hwr = (HttpWebRequest)WebRequest.Create(url);
hwr.AllowAutoRedirect = true;
hwr.UserAgent = UserAgent;
hwr.Headers.Add(hd_ac_lang[0], hd_ac_lang[1]);
hwr.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
hwr.Timeout = 14000;
try
{
using (var response = hwr.GetResponse())
{
using (var reader = new StreamReader(response.GetResponseStream()))
{
source = await reader.ReadToEndAsync();
if (check_source(source))
{
return source;
}
}
}
}
catch (WebException ex)
{
hwr.Abort();
if (ex.Status == WebExceptionStatus.ProtocolError)
{
if (((HttpWebResponse)ex.Response).StatusCode == HttatusCode.NotFound)
{
// handle the 404 here
return "404";
}
}
else
{
Console.WriteLine(ex.Status.ToString());
}
}
}
}
:가 나는 hwr.Abort()를 가지고 사용; finnaly 절로하지만 그것은 도움이되지 않았다.
편집 : 콘솔이 내 메시지가 14 초마다이 메시지를 기록하는 것과 관련이 있다고 생각합니다.
현재 사용중인 방법에 문제가 있습니까? 제한 시간이 초과되어 루프백됩니다. – CathalMF
@CathalMF 둘 중 하나만 알지만, 첫 번째 시간 초과 후 루프에 빠지는 것 같습니다. 시간 초과 상태에서 그 영원히 그 후 hwr처럼. – Incognito
서버 종료가 시간 초과 루프를 일으키는 것은 아닌지 확실합니까? – CathalMF