. Я пишу простое приложение для запроса определенного URL-адреса в течение определенного периода времени для обнаружения изменений, но я замечаю, что после 5000 запросов или около того запросы начнут тайм-аут..NET. Запросы на выбор времени после определенного периода времени.
Это делает цикл через хостов (около 200 различных узлов в цикле через)
цели и исходные соединения являются очень стабильными.
После перезапуска программы нет проблем с тайм-аутом.
Вот соответствующий код:
public static string download_data()
{
String ret = String.Empty;
try
{
Uri newUri = new Uri(FinalURL.Replace(Host,Hosts[bestHostIndex]));
var request = (HttpWebRequest)WebRequest.Create(newUri);
request.Method = "GET";
request.AllowAutoRedirect = true;
request.KeepAlive = true;
request.Referer = EscapedURL;
request.UserAgent = UA;
request.Headers.Add("Pragma", "no-cache");
request.Timeout = 3000;
request.Host = HostMain;
request.Proxy = null;
request.CookieContainer = Session.Cookies;
using (var resp = request.GetResponse())
{
var reader = new StreamReader(resp.GetResponseStream());
ret = reader.ReadToEnd();
}
return ret;
}
catch(WebException e)
{
Console.WriteLine("Error: "+e.Message);
if (e.Status == WebExceptionStatus.ProtocolError)
{
WebResponse resp = e.Response;
using (StreamReader sr = new StreamReader(resp.GetResponseStream()))
{
ret = sr.ReadToEnd();
}
}
return ret;
}
}
Очень странно, потому что я думаю, что там будет проблема с подключением, то перезапустить приложение не будет исправить эту проблему. Кажется, что сеть «заклинило», чем дольше работает приложение. Возможно, я неправильно очищаю ресурс или что-то в этом роде.
Также может быть уместно упомянуть, что первый запрос ВСЕГДА истекает.
Помощь было бы здорово
Спасибо, что поймали это! –