如何解决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元数据。
客户端首先得到一个适当的“包”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在Indexing阶段读取.nupkg文件中包含的元数据,该阶段更新存储库的元数据。
