自托管Azure Pipelines执行dotnet restore时遇NU1301错误求助
解决自托管Azure Pipelines代理上dotnet restore的NU1301错误
排查代理机器网络连通性
在代理机器上执行命令访问Feed的服务索引URL,比如:Invoke-WebRequest -Uri "https://pkgs.dev.azure.com/[组织名]/[项目名]/_packaging/[Feed名]/nuget/v3/index.json"或者Linux/macOS下:
curl https://pkgs.dev.azure.com/[组织名]/[项目名]/_packaging/[Feed名]/nuget/v3/index.json确认能正常返回JSON内容,若失败则排查防火墙、内网规则或代理服务器配置。
验证Feed权限配置
确保流水线使用的身份拥有目标Feed的读取权限:- 进入Feed的权限设置页面,检查
[组织名] Build Service ([项目名])账号是否在“读者”或“贡献者”组中 - 若使用个人访问令牌(PAT),确认令牌包含
packaging read权限且未过期
- 进入Feed的权限设置页面,检查
检查临时NuGet配置有效性
流水线运行时会在代理机器的$(Agent.TempDirectory)目录生成临时NuGet.config,找到该文件:- 核对Feed的URL是否正确
- 可手动替换配置中的密码为有效PAT,执行
dotnet restore --configfile [临时配置文件路径]测试是否能成功拉取包
禁用全局NuGet配置干扰
重命名代理机器上的全局NuGet配置文件(Windows路径:C:\Users\[用户名]\AppData\Roaming\NuGet\NuGet.config;Linux/macOS路径:~/.nuget/NuGet/NuGet.config),再重新运行流水线,排除全局配置的冲突。更新代理与Dotnet SDK版本
将自托管Azure Pipelines代理更新至最新稳定版,同时确保代理机器上的Dotnet SDK为项目兼容的最新版本,避免版本bug导致的身份验证或索引加载问题。确认目标项目的访问限制
若Feed所在项目为私有项目,检查是否设置了IP允许列表,将代理机器的IP加入列表;同时确认项目未设置额外的访问权限限制。
内容的提问来源于stack exchange,提问作者pantonis
相关产品推荐
相关产品推荐

