gpt4 book ai didi

c# - .NET 中的 HttpWebRequest NameResolutionFailure 异常(在 Ubuntu 上使用 Mono)

转载 作者:可可西里 更新时间:2023-11-01 07:46:10 28 4
gpt4 key购买 nike

我有一个通过 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();
}
}

问题是几天后我开始抛出异常:

        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

将返回没有任何问题的文件,ping 和其他解析 DNS 的命令也是如此。

然而,我的程序将继续抛出该异常,直到我重新启动它。重新启动应用程序后,它将再次开始正常工作。

我检查了系统上打开的文件数(400 左右)、内存使用情况(327mb of 4gb)、CPU 使用情况(2-3%),一切正常。

有什么想法吗?

最佳答案

您可以通过将主机名转换为 ip 并将主机名添加到 Headers 集合或 Host 属性来解决它。

如果您的网址是 http://example.com/uri。楼主自己解决。假设它的 1.2.3.4。它将是 http://1.2.3.4/uri。现在将 Host: example.com header 添加到您的请求中。我认为这可以通过设置 HttpWebRequest.Host 属性来完成。

关于c# - .NET 中的 HttpWebRequest NameResolutionFailure 异常(在 Ubuntu 上使用 Mono),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8999616/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com