以下代码:
WebClient client = new WebClient();
client.DownloadProgressChanged += DownloadProgressChanged;
client.DownloadFileCompleted += DownloadFileCompleted;
client.DownloadFileAsync(new Uri(downloadUrl), downloadPath);
在.NET 4.5中正常工作 - 它在没有任何问题的情况下下载文件,但是在.NET 3.0或3.5中它不起作用 - 文件显示0KB。
有人知道为什么差异吗?我想知道3.0中是否还缺少其他4.5的标题?
它也不会丢任何错误。
更新:
最终抛出了"操作已经计时了"。例外。
更新#2:
我从HTTPS更改为HTTP,在我的特殊情况下,这似乎有效。实际上,我的HTTP调用将其重定向到HTTP。但是,通过直接去HTTPS,使用.NET 3.0对我无效。
默认超时可能会有所不同,具体取决于框架版本。Web.config文件中的绑定配置就是这种情况,因此我怀疑这里也是如此。
我建议创建一个派生的WebClient类,并覆盖GetWebrequest方法,以设置该线程中建议的自定义超时:https://stackoverflow.com/a/a/3052637/2046539,该文章的灵感来自此博客:http:http:http:http:http:http:http:http:http://w3ka.blogspot.be/2009/12/how-to-fix-fix-webclient timeout-issue.html
作为一般规则:永远不要相信默认值。您应该始终使用自己的价值观。大多数时间默认值都没有记录,并且是实现细节。