错误:"请求已中止:连接意外关闭。"使用WebClient.DownloadFIleAsync时

时间:2015-12-04 04:20:53

标签: c# github webclient

我在我的代码Visual Studio 2015 Community Edition中使用C#。

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

  

https://github.com/&LT;&#39; Github上   用户&#39;&gt; /&lt;&#39; repo&#39;&gt; /releases/download/1.0.7.4/<&#39; 7zip文件下载&#39;&gt;

如果我使用上面的Uri,则总会出现此错误:

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

奇怪的是,如果我从我的回购中尝试另一个Uri,它就会成功下载。

  

这是我的另一个Uri:https://raw.githubusercontent.com/&lt;&#39; Github   用户&#39;&gt; /&lt;&#39; repo&#39;&gt; / master /&lt;&#7; 7zip文件下载&#39;&gt;

这是我的代码

// 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(&#34; token {0}&#34;,applicationInfo.TokenAuthorization));

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

我真的不知道什么是错的,而且我已经挣扎了3天..

注意:

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

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

- updateInfo.Uri:是Uri地址

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

1 个答案:

答案 0 :(得分:1)

最后我找到了差距。错误的网址,必须处理重定向!

根据Github Release,要从私人仓库下载二进制文件或发布文件,请使用资产网址。

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

您只需在WebClient.DownloadFileAsync中使用该Url,无需标题或授权等,文件将在以后快速到达您的本地驱动器..

这完全是因为私人回购。

希望这对你们有用..