C# 使用Octokit.net从私有GitHub存储库版本下载资产

C# 使用Octokit.net从私有GitHub存储库版本下载资产,c#,github,github-api,octokit.net,C#,Github,Github Api,Octokit.net,我正试图从我的私人github repo下载最新资产,但每次出现404错误时,我的代码如下: //初始化GitHubClient GitHubClient=新的GitHubClient(新的ProductHeaderValue(“MyClient”); client.Credentials=新凭据(“我的令牌”); //获取最新版本 Release latestRelease=client.Repository.Release.GetLatest(“所有者”、“回购”).Result; 字符串d

我正试图从我的私人github repo下载最新资产,但每次出现404错误时,我的代码如下:

//初始化GitHubClient
GitHubClient=新的GitHubClient(新的ProductHeaderValue(“MyClient”);
client.Credentials=新凭据(“我的令牌”);
//获取最新版本
Release latestRelease=client.Repository.Release.GetLatest(“所有者”、“回购”).Result;
字符串downloadUrl=latestRelease.Assets[0]。浏览器下载URL;
//使用WebClient下载
使用var webClient=new webClient();
webClient.Headers.Add(HttpRequestHeader.UserAgent,“Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,如Gecko)Chrome/70.0.3538.77 Safari/537.36”);
Add(HttpRequestHeader.Authorization,$“token{my token}”);
webClient.DownloadFileAsync(新Uri(downloadUrl),@“F:\Path\For\Storing\My\File.zip”);
//此行创建.zip文件,但始终为0KB
我试过了-

  • 添加“接受:应用程序/八位字节流”标题
  • 使用“用户名:密码”作为授权头
  • (坏主意,千万不要这样做!!!)授予令牌完整作用域 他们都没有成功

另外,我知道在StackOverflow上有无数类似的问题,但没有一个对我有效,我已经挣扎了好几个星期。

所以我终于找到了答案。您应该使用githubrestapi来下载文件,而不是直接链接

GET/repos/owner/repository/releases/assets/

以下是更新的代码:

//初始化GitHubClient
GitHubClient=新的GitHubClient(新的ProductHeaderValue(“MyClient”);
client.Credentials=新凭据(“我的令牌”);
//获取最新版本
Release latestRelease=client.Repository.Release.GetLatest(“所有者”、“回购”).Result;
int assetId=latestRelease.Assets[0].Id;
字符串下载URL=$”https://api.github.com/repos/owner/repository/releases/assets/{assetId}”;
//使用WebClient下载
使用var webClient=new webClient();
webClient.Headers.Add(HttpRequestHeader.UserAgent,“Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,如Gecko)Chrome/70.0.3538.77 Safari/537.36”);
添加(HttpRequestHeader.Authorization,“令牌我的令牌”);
添加(HttpRequestHeader.Accept,“应用程序/八位字节流”);
//下载该文件
webClient.DownloadFileAsync(downloadUrl,“C:/Path/To/File.zip”);