.NET 3.0和.NET 4.5下载fileasync之间的操作不一致



以下代码:

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

作为一般规则:永远不要相信默认值。您应该始终使用自己的价值观。大多数时间默认值都没有记录,并且是实现细节。

最新更新