我在我的代码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:是目标下载文件
答案 0 :(得分:1)
最后我找到了差距。错误的网址,必须处理重定向!
根据Github Release,要从私人仓库下载二进制文件或发布文件,请使用资产网址。
Github会从http://github-cloud.s3.amazonaws.com发送重定向下载网址,其中包含一些参数。
您只需在WebClient.DownloadFileAsync中使用该Url,无需标题或授权等,文件将在以后快速到达您的本地驱动器..
这完全是因为私人回购。
希望这对你们有用..