Artifactory NuGet安装未获得最新的软件包版本
从自托管工件安装NuGet软件包时遇到问题。当包ID超过30个唯一版本时,NuGet install命令将无法识别最新版本。通过查看NuGet install命令的日志,我可以看到它发出了两个web请求Artifactory NuGet安装未获得最新的软件包版本,nuget,artifactory,Nuget,Artifactory,从自托管工件安装NuGet软件包时遇到问题。当包ID超过30个唯一版本时,NuGet install命令将无法识别最新版本。通过查看NuGet install命令的日志,我可以看到它发出了两个web请求 GET https://artifactory.local/artifactory/api/nuget/<repository>/FindPackagesById()?id='<package ID>' OK https://artifactory.local/artif
GET https://artifactory.local/artifactory/api/nuget/<repository>/FindPackagesById()?id='<package ID>'
OK https://artifactory.local/artifactory/api/nuget/<repository>/FindPackagesById()?id='<package ID>' 815ms
GET https://artifactory.local/artifactory/api/nuget/<repository>/FindPackagesById()?$skip=80&id='<package ID>'
OK https://artifactory.local/artifactory/api/nuget/<repository>/FindPackagesById()?$skip=80&id='<package ID>' 209 ms
GEThttps://artifactory.local/artifactory/api/nuget//FindPackagesById()?id=“”
好啊https://artifactory.local/artifactory/api/nuget//FindPackagesById()?id=''815ms
得到https://artifactory.local/artifactory/api/nuget//FindPackagesById()?$skip=80&id=''
好啊https://artifactory.local/artifactory/api/nuget//FindPackagesById()?$skip=80&id=''209毫秒
当我运行这些命令时,我得到一个XML提要响应,分别有三十个和零个条目。如果我将第二个请求中的“$skip”参数调整为30,我将看到我最近的包
Artifactory是否通过不返回80个条目而错误地实现了NuGet API FindPackagesById方法
规格
- Artifactory版本4.12.01
- NuGet命令行版本3.4.4.1321
在修复RTFACT-12379之前,目前(不太理想的)解决方法是不使用虚拟存储库来安装具有80多个版本的软件包,或者确保某个包不存在于多个存储库中。这会发生在虚拟存储库中吗?会发生在虚拟存储库中。这会发生在使用虚拟存储库时,但听起来与我的情况不完全一样。第一个查询不指定任何跳过参数,但返回34个包中只有30个条目的结果。这些包仅存在于虚拟存储库下三个存储库中的一个存储库中。虚拟存储库指向远程存储库,远程存储库指向承载包的本地存储库。如果指定了$skip=30,我确实看到了其他4个包。@MatthewRyan是托管这些包的远程端点吗?是否为Artifactory端点?如果是,你知道什么是人工版本吗?我这么问是因为旧的人工制品版本曾经将页面大小限制为30 IIRC。我会尝试直接查询端点的本地repo(使用相同的FindPackagesById()请求),并查看它是否在第一页返回最多30个结果。另外,尝试直接查询服务器上的远程repo(而不是虚拟的),看看是否会生成正确的$skip值30。这听起来可能就是问题所在。我们正在升级我们的两个Artifactory实例,以便它们位于不同的主要版本上。远程存储库不使用“$skip”,而是指定要继续使用“$skiptoken”的包的显式版本。@MatthewRyan yes,$skiptoken是以前的分页约定,现在已替换为$skip。无论是Artifactory还是NuGet gallery都不再使用它了。在这种情况下,升级第二个实例听起来像是一种方法。