【发布时间】:2011-05-23 20:39:27
【问题描述】:
使用System.Net.WebClient.DownloadData() 方法时,我的响应时间过慢。
在 .NET 中使用 WebClient 类获取 url 时,大约需要 10 秒才能得到响应,而我的浏览器在 1 秒内获取相同的页面。 这适用于大小为 0.5kB 或更小的数据。
请求涉及 POST/GET 参数和用户代理标头,如果这可能会导致问题。
如果在 .NET 中下载数据的其他方法是否会给我带来同样的问题,我还没有(还)尝试过,但我怀疑我可能会得到类似的结果。 (我一直觉得 .NET 中的 Web 请求异常缓慢……)
这可能是什么原因?
编辑:
我尝试使用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);
}
【问题讨论】:
标签: c# .net performance http