我有一个运行在Ubuntu上的.NET程序,通过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的ping和其他命令。
然而,我的程序在抛出该异常后将继续发生,直到我重新启动它。在重新启动应用程序后,它将再次按照预期开始工作。
我已经检查了系统上的打开文件计数(大约为400个),内存使用情况(4GB中的327MB),CPU使用率(2-3%)等,所有都正常。
有什么想法吗?
Dns.GetHostEntry(domainName);
或类似方法查找IP地址吗?我认为如果真的是DNS问题,这样做会导致相同的问题,或者你怀疑这是Mono/.NET中的一个错误? - antfxHttpWebRequest
不会解析 DNS。 - Shiplu MokaddimGetHostEntry
一次,以检查 DNS 中的更新并避免硬编码。不过,我真的很想找到问题所在,因为这只影响我的一些服务器,而不是所有服务器(我有50个)。 - antfx