Nexus升级后出现NU1301错误:无法获取Microsoft.NET.Test.Sdk信息
Nexus升级后NuGet拉取报错NU1301的原因与解决办法
问题根源
- API解析逻辑变更:Nexus 3.58.1对NuGet V3 API的请求参数解析做了严格调整,旧版本能兼容的URL单引号编码,新版本会直接判定为无效请求。
- 仓库索引损坏:跨大版本升级时,NuGet仓库的元数据索引没有自动重建,导致包检索请求无法匹配到正确的包信息。
- 协议支持收缩:新版本默认收紧了NuGet协议版本的支持范围,客户端请求的
semVerLevel=2.0.0可能不在默认允许的范围内。
解决步骤
1. 强制重建NuGet仓库索引
- 登录Nexus后台,找到你的
nuget-group仓库,进入设置页 - 切换到Repositories标签,点击底部的「Rebuild Index」按钮,等待索引重建完成(时间取决于仓库大小)
- 重建后重新执行
dotnet restore测试
2. 检查NuGet API配置
- 进入
nuget-group的配置页面,找到NuGet API板块:- 确认「Allow NuGet V3 API」是开启状态
- 检查「SemVer Level」设置是否包含2.0.0版本,若没有则手动添加
- 部分新版本Nexus提供了「兼容旧版请求」的选项,如有则开启
3. 修正NuGet源URL格式
- 打开本地的
NuGet.Config文件(路径一般是C:\Users\你的用户名\AppData\Roaming\NuGet\NuGet.Config) - 将仓库源URL修改为标准的V3格式,去掉多余的单引号:
<add key="mynexus" value="https://mynexus.com/repository/nuget-group/v3/index.json" /> - 保存后执行
nuget update -self更新NuGet客户端,再重试拉取操作
4. 验证权限配置
- 进入Nexus的「Security」→「Realms」页面,确保「NuGet API Key Realm」和「NuGet Feed Realm」已启用
- 检查
nuget-group仓库的权限设置,确认对应账号(或匿名用户)有「read」权限
5. 分阶段升级(终极方案)
如果跨大版本升级导致的兼容性问题无法快速修复,先通过Helm回滚到3.29.0:
helm rollback nexus-release 1 # 替换为你的Helm release名称和历史版本号
然后分小版本逐步升级(比如3.29.0 → 3.40.1 → 3.50.0 → 3.58.1),每个版本升级后都验证NuGet功能正常。
内容的提问来源于stack exchange,提问作者Abdullah Khawer
相关产品推荐
相关产品推荐

