You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从GitHub私有仓库下载Release资产时PowerShell/.NET报415错误如何解决

私有仓库GitHub Release资产下载415错误解决方案

错误根因

触发415 Unsupported Media Type错误的核心原因是接口用途与请求参数不匹配:

  • 当前你请求的URL是GitHub API的资产元数据查询端点,仅用于返回资产结构化信息,仅支持Accept: application/json请求头,不支持二进制流返回
  • 二进制下载需要使用元数据返回结果中的browser_download_url字段地址,或配置正确的API版本头直接通过元数据端点下载

修复方案

方案1:先查元数据再下载(兼容性最优)

PowerShell实现

# 克隆原有认证头,先查询资产元数据
$metaHeaders = $headers.Clone()
$metaHeaders["Accept"] = "application/json"
$assetMetadata = Invoke-RestMethod -Uri $downloadUri -Headers $metaHeaders

# 使用元数据返回的真实下载地址请求二进制
Invoke-WebRequest -Uri $assetMetadata.browser_download_url -Headers $headers -OutFile $extractPath

C#实现

// 先请求元数据获取真实下载地址
downloadRequest.Headers.Remove("Accept");
downloadRequest.Headers.TryAddWithoutValidation("Accept", "application/json");
using var metaResponse = await client.SendAsync(downloadRequest);
metaResponse.EnsureSuccessStatusCode();
var assetMeta = await metaResponse.Content.ReadFromJsonAsync<ReleaseAssetMeta>();

// 构造真实下载请求,复用原有认证配置
using var realDownloadReq = new HttpRequestMessage(HttpMethod.Get, assetMeta.browser_download_url);
foreach (var header in downloadRequest.Headers)
{
    realDownloadReq.Headers.TryAddWithoutValidation(header.Key, header.Value);
}
using var downloadResponse = await client.SendAsync(realDownloadReq);
downloadResponse.EnsureSuccessStatusCode();

// 自定义元数据接收类,可按需补充其他字段
public class ReleaseAssetMeta
{
    public string browser_download_url { get; set; }
}

方案2:直接通过元数据端点下载

无需跳转地址,在原有请求头中新增X-GitHub-Api-Version: 2022-11-28,保留Accept: application/octet-stream即可直接返回二进制流。


内容的提问来源于stack exchange,提问作者Joe B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 18:30:01