ant*_*tfx 15 c# ubuntu mono httpwebrequest
我有一个通过Mono 2.10在Ubuntu上运行的.NET程序
该程序每分钟左右通过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();
}
}
Run Code Online (Sandbox Code Playgroud)
问题是几天后我开始抛出异常:
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
Run Code Online (Sandbox Code Playgroud)
例如,服务器仍然可以解析DNS
wget http://www.google.com
Run Code Online (Sandbox Code Playgroud)
将ping没有任何问题,以及解析DNS的其他命令将返回文件.
然而,我的程序将继续抛出该异常,直到我重新启动它.重新启动应用程序后,它将再次开始工作.
我检查了系统上的打开文件数(400 ish),内存使用情况(327mb的4gb),CPU使用率(2-3%),一切正常.
有任何想法吗?
您可以通过将主机名转换为ip并将主机名添加到Headers集合或Host属性来解决此问题.
如果你的网址是http://example.com/uri.自己解决主机问题.假设它1.2.3.4.它会的http://1.2.3.4/uri.现在Host: example.com为您的请求添加标头.我认为可以通过设置HttpWebRequest.Host属性来完成.
| 归档时间: |
|
| 查看次数: |
28088 次 |
| 最近记录: |