我正在使用WebClient从网站下载字符串(只包含纯文本,没有其他内容),因此我使用DownloadString方法:
WebClient wc = new WebClient();
string str = wc.DownloadString("http://blah");
它的功能很好,但问题是第一次下载字符串需要很长时间,大约5秒钟。之后就可以快速工作了。为什么会出现这种情况,该如何解决这个问题?
我正在使用WebClient从网站下载字符串(只包含纯文本,没有其他内容),因此我使用DownloadString方法:
WebClient wc = new WebClient();
string str = wc.DownloadString("http://blah");
它的功能很好,但问题是第一次下载字符串需要很长时间,大约5秒钟。之后就可以快速工作了。为什么会出现这种情况,该如何解决这个问题?
设置 WebClient
对象的 Proxy
属性为 null 可以消除您所看到的延迟。或者,如果您已经配置了系统使用代理,则可以使用 WebRequest.GetSystemWebProxy
来检索代理。无论哪种方法都应该消除延迟。
webClient.Proxy = WebRequest.GetSystemWebProxy()
还是 WebRequest.DefaultProxy
都不能解决问题,延迟仍然存在。将其设置为 null
或 GlobalProxySelection.GetEmptyWebProxy()
可以解决问题... 但是这样应用程序就无法在需要代理的连接上使用了!难道真的没有解决方案吗? - BlueRaja - Danny Pflughoeft首次访问需要进行DNS查找并连接到主机 - 之后,在同一进程中可能会重复使用相同的连接。对于第一次请求到任何地方,它也可能尝试检测代理设置等。
如果您想了解真正导致其变慢的网络层面上发生了什么,建议您使用Wireshark抓取流量并监视流量。
async
版本,这也会导致应用程序冻结。这种狗屎是怎么发布出来的!? - BlueRaja - Danny Pflughoeft