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

Azure DevOps 2020流水线Docker还原卡住,报NU1301错误求助

问题

Azure DevOps 2020中的多条流水线此前运行正常,如今突然失效。排查发现Docker在执行还原操作时卡住,将项目克隆到Docker服务器本地执行docker build命令后,出现与Azure DevOps日志一致的错误。

环境信息

  • 操作系统:Rocky Linux 8.6
  • Docker版本:20.10.18

错误详情

构建失败,/src/RLData_API/RLData_API.csproj报NU1301错误:无法加载源http://api.nuget.org/v3/index.json的服务索引。

配置文件

Dockerfile

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["RLData_API/RLData_API.csproj", "RLData_API/"]
COPY ["RLData_API/nuget.config", ""]
#RUN dotnet restore "RLData_API/RLData_API.csproj"
RUN dotnet restore -v diag  "RLData_API/RLData_API.csproj" --configfile nuget.config
COPY . .
WORKDIR "/src/RLData_API"
RUN dotnet build "RLData_API.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "RLData_API.csproj" -c Release -o /app/publish /p:UseAppHost=false

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "RLData_API.dll"]

nuget.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <packageSources>
        <add key="Feed" value="http://dev.to.com/Iro/IQ/_packaging/Feed/nuget/v3/index.json" />
        <add key="nuget.org" value="http://api.nuget.org/v3/index.json" protocolVersion="3" />
    </packageSources>
    <activePackageSource>
            <add key="All" value="(Aggregate source)" />
        </activePackageSource>
      <packageSourceCredentials>
        <Feed>
            <add key="Username" value="iro" />
            <add key="ClearTextPassword" value="my PAT Token" />
                <add key="ValidAuthenticationTypes" value="basic" />
        </Feed>
      </packageSourceCredentials>
</configuration>
解决方法
  1. 验证网络连通性
    在Docker服务器上执行curl -v http://api.nuget.org/v3/index.json,确认能正常返回索引内容。如果失败,检查服务器防火墙规则、网络代理设置,确保Docker容器具备外网访问权限。同时检查Docker daemon的代理配置(/etc/docker/daemon.json),若有代理需验证其可用性。

  2. 切换NuGet源为HTTPS
    将nuget.config中nuget.org的地址从http://api.nuget.org/v3/index.json改为https://api.nuget.org/v3/index.json,HTTP协议可能被拦截或存在兼容性问题,HTTPS是NuGet官方推荐的协议。

  3. 调整Dockerfile中的还原路径
    当前nuget.config被复制到/src根目录,可尝试将其复制到项目目录下,确保还原命令能正确读取配置:

    COPY ["RLData_API/nuget.config", "RLData_API/"]
    RUN dotnet restore -v diag "RLData_API/RLData_API.csproj" --configfile RLData_API/nuget.config
    

    也可以直接移除--configfile参数,让dotnet自动识别项目目录下的配置文件。

  4. 排查私有源认证问题
    虽然错误指向nuget.org,但私有源的认证失败可能导致整个还原流程阻塞。检查PAT令牌是否过期、是否具备私有Feed的读取权限,可暂时注释掉nuget.config中的私有源配置,单独测试nuget.org的还原是否正常,以此定位问题。

  5. 更新.NET SDK镜像
    尝试使用指定版本的.NET SDK镜像(如mcr.microsoft.com/dotnet/sdk:6.0.416)替代mcr.microsoft.com/dotnet/sdk:6.0,旧镜像可能存在NuGet相关的已知bug,更新后可解决兼容性问题。

内容的提问来源于stack exchange,提问作者a.sadeh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 20:15:43