Error : "The request was aborted: The connection was closed unexpectedly." while using WebClient.DownloadFIleAsync

Error : "The request was aborted: The connection was closed unexpectedly." while using WebClient.DownloadFIleAsync

我在我的代码中使用 C#,Visual Studio 2015 社区版。

我想从私有 Github 存储库异步下载发布文件,并且已经有了下载 Uri:

https://github.com/<'Github user'>/<'repo'>/releases/download/1.0.7.4/<'7zip file to download'>

如果我使用上面的 Uri,这个错误总是会出现:

请求中止:连接意外关闭。

奇怪的是,如果我从我的存储库中尝试另一个 Uri,它会成功下载。

This is my another Uri : https://raw.githubusercontent.com/<'Github user'>/<'repo'>/master/<'7zip file to download'>

这是我的代码

// Set up WebClient to download file
        webClient = new WebClient();
        webClient.Proxy = WebRequest.DefaultWebProxy;
        webClient.Proxy.Credentials = CredentialCache.DefaultCredentials;
        //webClient.UseDefaultCredentials = true;
        //webClient.Headers.Add(HttpRequestHeader.Authorization, string.Format("token {0}", applicationInfo.TokenAuthorization));
        webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(webClient_DownloadProgressChanged);
        webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(webClient_DownloadFileCompleted);

        // Download file
        try
        { webClient.DownloadFileAsync(updateInfo.Uri, this.temp7zFile); }
        catch { this.DialogResult = DialogResult.No; this.Close(); }

我尝试添加(现在它评论)

webClient.UseDefaultCredentials = true;

webClient.Headers.Add(HttpRequestHeader.Authorization, string.Format("token {0}", applicationInfo.TokenAuthorization));

结果始终相同 = 请求被中止:连接意外关闭。

真不知道怎么回事,折腾了3天..

注:

- 这两个 Uri 都是正确的,如果我在 firefox 浏览器中 运行 它,它会自动下载。

- applicationInfo.TokenAuthorization : 是Github授权的令牌。

- updateInfo.Uri : 是Uri地址

- this.temp7zFile : 是目标下载文件

终于找到差距了。错误 Url,必须处理重定向!

基于Github Release,要从私有仓库下载二进制文件或发布文件,请使用资产的Url。

Github 将从 http://github-cloud.s3.amazonaws.com 发送重定向下载 Url,其中包含一些参数。

您只需在 WebClient.DownloadFileAsync 中使用 Url ,无需 header 或授权等,文件将从此愉快地到达您的本地驱动器..

都是因为私有repo

希望对大家有用..