Исключение HttpWebRequest NameResolutionFailure в .NET (с Mono в Ubuntu)

У меня есть .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%), и все в порядке.

Есть идеи?

15
задан antfx 25 January 2012 в 08:19
поделиться