У меня есть программа .NET, запущенная в Ubuntu через Mono 2.10
Программа загружает веб-страницу через HttpWebRequest каждую минуту или около того, которая работает в большинстве случаев:
String result;
WebResponse objResponse;
WebRequest objRequest = System.Net.HttpWebRequest.Create(url);
using (objResponse = objRequest.GetResponse())
{
using (StreamReader sr =
new StreamReader(objResponse.GetResponseStream()))
{
result = sr.ReadToEnd();
// Close and clean up the StreamReader
sr.Close();
}
}
Проблема в том, что через несколько дней я начинаю получать исключения:
DateTime: 01/25/2012 08:15:41
Type: System.Net.WebException
Error: Error: NameResolutionFailure
Stack:
at System.Net.HttpWebRequest.EndGetResponse (IAsyncResult asyncResult) [0x00000] in <filename unknown>:0
at System.Net.HttpWebRequest.GetResponse () [0x00000] in <filename unknown>:0
at socks_server.Program.readHtmlPage (System.String url) [0x00000] in <filename unknown>:0
at socks_server.Program.getAccessKeysProc () [0x00000] in <filename unknown>:0
Сервер все еще в состоянии разрешить DNS, например
wget http://www.google.com
Вернет файл без каких-либо проблем, какбудет пинговать и другие команды, которые разрешают DNS.
Однако моя программа будет продолжать генерировать это исключение, пока я не перезапущу его.После перезапуска приложения оно снова начнет работать, как и должно.
Я проверил количество открытых файлов в системе (400 ish), использование памяти (327 МБ из 4 ГБ), использование ЦП (2-3%) ивсе в порядке.
Есть идеи?