首页 > 解决方案 > 托管在 AWS 上的私有 NuGet 包服务器仅对一个 NuGet 包返回 403 Forbidden 错误

问题描述

许多年前,我在 AWS 实例上设置了一个 NuGet 服务器来托管我团队的软件项目的 NuGet 包。它一直工作得很好,直到今天。

我有一个项目属于一个更大的解决方案,当它的 Jenkins 作业运行时,它正在向我的服务器提供一个 NuGet 包。我需要将该项目移动到它自己的 Git 存储库中,并使用它自己的解决方案和它自己的构建脚本和它自己的 Jenkins 作业。一切都很好。新的 Jenkins 作业从新的存储库构建并将 NuGet 包发布到我的服务器。

但是,当我随后尝试使用 Visual Studio 2019 将该 NuGet 包添加到另一个项目时,我收到了一个从未发生过的 NuGet 服务器的凭据提示(该项目已使用该服务器中的其他 NuGet 包)。不知所措,我尝试输入 AWS 服务器的 Windows 管理员帐户密码。提示消失了,并没有回来。

Visual Studio 中的管理 NuGet 包显示了包含最新版本版本的包,但是当我尝试将该包添加到我的项目中时,我收到 403 Forbidden 错误。这是该服务器上唯一存在此问题的 NuGet 包。所有其他人都成功地工作。

我已经检查了 NuGet 服务器网站的 \Packages 文件夹以及此 NuGet 包的特定文件夹的文件夹权限。似乎没有什么不合时宜的。我已从网站的 \Packages 目录中删除并替换了 NuGet 包的文件夹。我可以看到服务器的 web.config 文件中没有任何内容会导致这种情况。我不知道还要检查什么。Google 在 NuGet 服务器上搜索 403 Forbidden 错误并没有发现任何相关的信息。我没有使用 TFS。所有其他软件包都可以正常工作。为什么一个包有这个问题?

更新:当我尝试使用命令行安装这个包时,这是输出:

PM> install-Package MyPackage -Version 3.0.0-devbuild0229

尝试针对项目“MyProject”收集包“MyPackage.3.0.0-devbuild0229”的依赖关系信息,目标是“.NETFramework,Version=v4.8”

收集依赖信息需要 320 毫秒

尝试使用 DependencyBehavior 'Lowest' 解决包 'MyPackage.3.0.0-devbuild0229' 的依赖关系

解析依赖信息耗时 0 ms

解决安装包“MyPackage.3.0.0-devbuild0229”的操作

解决了安装包“MyPackage.3.0.0-devbuild0229”的操作

从“MySource”中检索包“MyPackage 3.0.0-devbuild0229”。

获取http://ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com/api/v2/package/mypackage/3.0.0-devbuild0229

禁止http://ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com/api/v2/package/mypackage/3.0.0-devbuild0229 1647ms

从“http://ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com/api/v2/package/mypackage/3.0.0”下载“MyPackage.3.0.0-devbuild0229”时出错-devbuild0229'。

响应状态码不表示成功:403(禁止)。

获取http://ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com/api/v2/package/mypackage/3.0.0-devbuild0229

禁止http://ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com/api/v2/package/mypackage/3.0.0-devbuild0229 667ms

从“http://ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com/api/v2/package/mypackage/3.0.0”下载“MyPackage.3.0.0-devbuild0229”时出错-devbuild0229'。

响应状态码不表示成功:403(禁止)。

获取http://ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com/api/v2/package/mypackage/3.0.0-devbuild0229

禁止http://ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com/api/v2/package/mypackage/3.0.0-devbuild0229 645ms

安装失败。滚回来...

项目“MyProject”中不存在包“MyPackage.3.0.0-devbuild0229”

文件夹“C:\MyProject\packages”中不存在包“MyPackage.3.0.0-devbuild0229”

执行 nuget 操作耗时 3.78 秒

install-Package:从“http://ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com/api/v2/package/mypackage”下载“MyPackage.3.0.0-devbuild0229”时出错/3.0.0-devbuild0229'。

响应状态码不表示成功:403(禁止)。

在行:1 字符:1

经过时间:00:00:04.4888243

标签: amazon-web-servicesvisual-studiojenkinsnuget

解决方案


事实证明,我们的 IT 部门最近对使用名为 Zscalar 的应用程序访问 AWS 服务器实施了一些额外限制。通过单击 VS 输出窗口中的禁止消息中的链接,我的浏览器将打开一个 Zscalar 网页,该网页指示:

您尝试访问:http ://ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com/api/v2/package/myPackage ..。继续访问该网站可能违反您的公司政策。仍然按“继续”按钮访问该站点,或按浏览器上的“返回”按钮返回

单击此页面上的继续按钮允许 Visual Studio 成功下载 NuGet 包,但只是暂时的,因此必须定期重复此过程。

我正在与我们的 IT 部门合作解决这个问题。


推荐阅读