.NET WebClient DownloadFile非常慢,Apache的错?

时间:2019-06-26 21:14:28

标签: c# .net wpf apache

我看到了十二个相似的问题,但没有一个完全适合我的问题。我正在200MB光纤网络上,从1GB的服务器下载到SSD。我可以使用浏览器快速下载文件,但是当尝试使用.NET下载文件时,要花8分钟才能下载一个8MB的文件。

第一轮设置非常简单:

var WClient = new WebClient();
WClient.Proxy = null;
WebRequest.DefaultWebProxy = null;
WClient.DownloadFile(upgradeUrl, zipFilePath);

在阅读了一些帖子之后,我添加了有关Proxy=null的内容,但是并没有任何改善。有人建议是否可能是DNS查找问题,因此我首先对服务器进行ping操作,因此它已经初始化了。我还尝试在URL的末尾添加一个随机的?random=9238432类型的字符串,以避免缓存问题。

经过一些进一步的测试,我发现了这篇文章: https://dejanstojanovic.net/aspnet/2018/march/download-file-in-chunks-in-parallel-in-c/

实现它之后,它仍然没有更快地运行,或者直到我注意到Console输出为止。

Size: 8890499bytes
Time taken: 439ms
Parallel: 2

该下载的实时时间为1分40秒。下载成功,只是永久完成。

我想知道是否要在.NET或apache2中配置一些东西来注册下载已完成并且可以继续吗?

更新: 以下内容对我来说要快得多。

public  static async Task<string> DownloadFile(string fileUri, string locationToStoreTo) {
    using (var client = new HttpClient())
    using (var response = await client.GetAsync(fileUri)) {
        response.EnsureSuccessStatusCode();
        var generatedName = locationToStoreTo;
        var stream = await response.Content.ReadAsStreamAsync();
        using (var fileStream = File.Create(generatedName)) {
            stream.CopyTo(fileStream);
        }
        return generatedName;
    }
}

0 个答案:

没有答案