如何解决NuGet问题
总结
比较正确的NuGet REST API调用可以显示问题所在。
影响版本
4.0.2 -最新
描述
在排除NuGet错误时,最好将应该发生的情况与当前发生的情况进行比较。通过模拟客户端执行的每个步骤,并检查Artifactory发送了哪些HTTP返回代码,可以消除大量干扰。
一般来说,这些返回代码指示了下一步要查看的位置:
403而且401-认证问题,检查授权设置
404—未找到资源,请检查存储库是否有资源
400-不正确的请求,使用curl获得原因短语
50 x—服务器问题,检查artifact .log
决议
使用网页浏览器
许多NuGet项目只能在Windows主机上构建,这意味着标准的故障排除工具如libcurl不可用或功能降低。
如果提供了正确的URL,现代web浏览器可以用来提取NuGet元数据。只需转到Artifactory URL,然后在“/ artifactory,从请求日志中添加信息来执行类似于NuGet客户端的GET操作。
这将显示正确的XML元数据,以进一步排除故障。
nuget列表
运行一个“nuget名单”命令会导致客户端从Artifactory中提取大部分NuGet元数据。
客户端首先得到一个正确的“packages”API格式的XML页面:
53 20180530043930 | | |请求64.71.2.36匿名| | | / api / nuget nuget HTTP / 1.0 | 200 | 0 |
然后它得到搜索命令的元数据格式:
20180530043930 | | 3 |请求64.71.2.36匿名| | | / api / nuget / nuget /美元元数据HTTP / 1.0 | 200 | 0 |
最后,它会拉出一个XML页面,列出所有可用的包:
| 691 | 20180530043933 |请求64.71.2.36匿名| | | / api / nuget / nuget /搜索()| HTTP / 1.0 | 200 | 0
安装bang.test.bench
运行一个“nuget安装”命令会导致客户端以两种不同的方式搜索包,这取决于NuGet客户端:
| 351 | 20180530044235 |请求64.71.2.36匿名| | | / api / nuget / nuget / FindPackagesById () | HTTP / 1.0 | 200 | 0
-或-
| 727 | 20180516133017 |请求10.6.16.165管理| | | / api / nuget / nuget-remote /包(Id =“bang.test.bench”,版本= 0.1.6.0)| HTTP / 1.1 | 200 | 0
这个XML元数据包含包的下载链接,然后客户端使用它:
| 1523 | 20180530044237 |请求64.71.2.36匿名| | | / api / nuget nuget /下载/ bang.test.bench / 0.1.6.0 HTTP / 1.0 | 200 | 4359 |
的.nupkg文件是通过上面的URL提取的,并且可以通过web浏览器手动下载来测试这一点。
Nuget push bang.test.bench.nupkg
一个“nuget推动”命令使用.nupkg作为有效载荷:
| 99 | 20180530044608 |请求64.71.2.36 |管理|把| / api / nuget / nuget / HTTP / 1.0 | 201 | 4587 |
在索引阶段,Artifactory读取包含在.nupkg文件中的元数据,该阶段更新存储库的元数据。
