Ho un programma .NET in esecuzione su Ubuntu attraverso Mono 2.10HttpWebRequest NameResolutionFailure eccezione .NET (con Mono su Ubuntu)
Il programma scarica una pagina web tramite un HttpWebRequest ogni minuto o giù di lì che funziona bene la maggior parte del tempo :
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();
}
}
Il problema è che dopo pochi giorni ho iniziare a ricevere le eccezioni sollevate:
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
Il server è ancora Abel per risolvere DNS, per esempio
wget http://www.google.com
restituirà il file senza alcun problema soltanto come volontà ping e altri comandi che risolvono DNS.
Tuttavia, il mio programma continuerà a generare quell'eccezione fino a quando non lo riavvio. Dopo aver riavviato l'applicazione, riprenderà a funzionare come dovrebbe.
Ho controllato i conteggi di file aperti sul sistema (400 ish), l'utilizzo della memoria (327mb di 4gb), l'utilizzo della CPU (2-3%) e tutti sono OK.
Qualche idea?
Significa cercare l'IP prima di usare "Dns.GetHostEntry (domainName);" o qualcosa del genere? Supponevo che avrebbe causato lo stesso problema se si trattava di un problema DNS, o sospetti che si tratti di un bug in Mono/.NET? – antfx
Sì, tramite codice programmato o hard. Questo assicura che 'HttpWebRequest' non risolva DNS ogni volta che si effettua una richiesta. –
hmm, OK, non è la soluzione ideale in quanto lascia ancora il problema lì, ma suppongo che potrei fare una chiamata a 'GetHostEntry' sempre un'ora o così per verificare gli aggiornamenti in DNS ed evitare il codice. Mi piacerebbe davvero trovare il problema anche se questo ha effetto solo su alcuni dei miei server, non tutti (ho 50) – antfx