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

Azure DevOps Server 2019 Artifacts NuGet还原报NU1301错误

NU1301错误:Azure DevOps Server 2019 NuGet包还原失败

问题场景

在Azure DevOps Server 2019环境中从Azure Artifacts还原NuGet包时,触发错误提示:
NU1301: Unable to load the service index for source http://xxxxx:8080/tfs/xxxxx/_packaging/xxxxx/nuget/v3/index.json
已验证的现象:

  • 浏览器可正常访问上述私有NuGet源地址,以及目标包xxxxx.Database.Net60的索引地址
  • 相同Nuget.config配置下,引用同私有源的其他内部包(如xxxxx.Core 0.1.0)时,dotnet restore可正常执行,仅引用xxxxx.Database.Net60 0.1.1时还原失败

现有配置

Nuget.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <clear />
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
    <add key="xxxxx" value="http://xxxxx:8080/tfs/xxxxx/_packaging/xxxxx/nuget/v3/index.json" />
  </packageSources>
  <activePackageSource>
    <add key="All" value="(Aggregate source)" />
  </activePackageSource>
</configuration>

报错项目包引用

<ItemGroup>
    <PackageReference Include="xxxxx.Database.Net60" Version="0.1.1" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="6.0.6" />
</ItemGroup>

正常还原项目包引用

<ItemGroup>
    <PackageReference Include="xxxxx.Core" Version="0.1.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="6.0.6" />
</ItemGroup>

问题根因

该问题由两个因素共同触发:

  1. .NET 6及以上版本的NuGet客户端默认启用非HTTPS源拦截机制:对于使用HTTP协议的NuGet源,只有被明确加入信任列表的源才会被用于完整的依赖链解析。未被信任的HTTP源仅能拉取无额外传递依赖的包,一旦目标包存在同私有源下的传递依赖,客户端会直接中断源加载,抛出NU1301错误。
  2. 当前配置的私有Azure Artifacts源存在两个配置缺失:一是使用HTTP协议但未加入NuGet客户端的信任列表,二是未显式声明NuGet协议版本。引用无额外私有依赖的xxxxx.Core时不会触发完整的依赖链源校验,所以可以正常还原;而xxxxx.Database.Net60存在同私有源下的传递依赖,直接触发了安全拦截。

浏览器可正常访问源地址是因为浏览器不存在NuGet客户端的这套源安全校验逻辑,不能作为CLI访问权限的判断依据。

修复方案

按优先级依次操作:

  • 最优方案:为Azure DevOps Server 2019配置HTTPS绑定,将Nuget.config中私有源的地址从HTTP替换为HTTPS协议,这是最符合安全规范的永久解决方式。
  • 临时兼容方案:如果暂时无法部署HTTPS,修改Nuget.config,显式声明NuGet协议版本,同时将当前HTTP私有源加入信任列表,修改后的完整配置如下:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <clear />
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
    <add key="xxxxx" value="http://xxxxx:8080/tfs/xxxxx/_packaging/xxxxx/nuget/v3/index.json" protocolVersion="3" />
  </packageSources>
  <config>
    <add key="allowInsecureConnections" value="true" />
  </config>
  <activePackageSource>
    <add key="All" value="(Aggregate source)" />
  </activePackageSource>
</configuration>
  • 还原操作前先清除本地NuGet缓存,避免旧的错误元数据干扰还原流程:
    dotnet nuget locals all --clear
    清除缓存后重新执行dotnet restore即可正常完成包还原。

内容的提问来源于stack exchange,提问作者Kelvin Go

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 16:54:22