当使用System.Net.WebClient.DownloadData() http://msdn.microsoft.com/en-us/library/system.net.webclient(v=VS.100).aspx方法我的响应时间非常慢。
当使用 .NET 中的 WebClient 类获取 URL 时,我需要大约 10 秒才能收到响应,而我的浏览器在不到 1 秒的时间内获取同一页面。
这是针对大小为 0.5kB 或更小的数据。
该请求涉及 POST/GET 参数和用户代理标头(如果这可能会导致问题)。
我还没有尝试过在 .NET 中下载数据的其他方法是否会给我带来同样的问题,但我怀疑我可能会得到类似的结果。 (我一直有一种感觉 .NET 中的 Web 请求异常缓慢......)
这可能是什么原因造成的?
Edit:
我尝试使用做同样的事情System.Net.HttpWebRequest
相反,使用以下方法,所有请求都会在 1 秒内完成。
public static string DownloadText(string url)
var request = (HttpWebRequest)WebRequest.Create(url);
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
return reader.ReadToEnd();
}
}
虽然这个(旧)方法使用System.Net.WebClient
每个请求需要 15-30 秒才能完成:
public static string DownloadText(string url)
{
var client = new WebClient();
byte[] data = client.DownloadData(url);
return client.Encoding.GetString(data);
}
我在使用 WebRequest 时遇到了这个问题。尝试设置 Proxy = null;
WebClient wc = new WebClient();
wc.Proxy = null;
默认情况下,WebClient、WebRequest 会尝试从 IE 设置中确定要使用的代理,有时会导致在发送实际请求之前延迟 5 秒。
这适用于使用 WebRequest 的所有类,包括具有 HTTP 绑定的 WCF 服务。
一般来说,您可以在应用程序启动时使用此静态代码:
WebRequest.DefaultWebProxy = null;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)