13

当 Visual Studio 包管理器 (NuGet) 响应“远程服务器返回错误:(503) 服务器不可用”消息时,有没有办法从备用服务器加载包?

4

7 回答 7

26

这是一个晦涩难懂的情况,可能只发生在“企业”网络环境中。如果这些条件适用于您:

  • 您需要通过 HTTP 代理服务器访问 Internet

  • HTTP 代理服务器需要有效的用户 ID 和密码(或 AD 身份验证)才能允许请求继续进行

  • 您一直在使用从 Linux/Unix 环境移植到 Windows 的酷炫开发工具

  • 新的酷工具在添加 HTTP_PROXY(或可能 HTTPS_PROXY 或两者)环境变量后工作

  • 您可以从浏览器访问 NuGet 服务器而不会收到 503 错误

那么很可能你无意中调用了这个配置特性而破坏了 NuGet 。我不确定环境变量是如何破坏 NuGet 的,但我怀疑 NuGet 正在检测和使用 http_proxy URL,但发送了一个空的用户 ID 和密码,这会导致 HTTP 代理拒绝请求。

修复:删除您添加的环境变量,看看是否可以将酷工具配置为在没有它们的情况下使用 HTTP 代理。

更新:使用上面“此配置功能”链接中引用的 NuGet 配置文件遇到此问题的一个版本。打开这个文件:

%appdata%\nuget\nuget.config

在你最喜欢的编辑器中。如果它包含带有http_proxyhttps_proxy的元素,那么删除这些元素也可以解决问题。

PS:希望我能得到 Panic 上校的支持 :-)

于 2013-12-12T22:34:10.130 回答
6

如果您过去使用过该软件包,它可能在您的缓存中。您可以通过进入 Visual Studio 中工具菜单下的库包管理器设置将本地缓存添加为可用包源。对于 Visual Studio 2012,选择工具、库包管理器、包管理器设置,然后单击包源。

在可用的包源部分中,键入类似“Cache”的名称,然后在源中,浏览到%LocalAppData%\NuGet\Cache。您可能需要使用 Windows 资源管理器将 %LocalAppData%\NuGet\Cache 转换为完整路径(通常是C:\Users\YourAccountName\AppData\Local\NuGet\Cache)。

将缓存作为可用源后,您现在可以使用包管理器控制台(位于其他窗口下的查看菜单下或库包管理器下的工具菜单下)。

在控制台(这是一个带有 NuGet 命令行开关的 PowerShell 窗口)中,您可以键入“get-help NuGet”来查看可用的命令。

然后使用Get-Package,您可以获得包 ID 的列表。确保将“包源”设置为“缓存”(或您所称的任何名称),并将默认项目设置为您需要操作的项目,这两个都是位于页面管理器控制台顶部的下拉菜单。您还可以使用 Get-Project 来验证您正在处理解决方案中的正确项目。

最后,您可以键入Install-Package,并在出现提示时输入 Get-Package commandlet 输出中的 Package ID。

于 2012-08-20T03:42:19.567 回答
1

我也有这个问题,这是因为我的网络。如果您的 Internet 上有任何阻塞(例如在公司 Internet 等中),您可能不允许下载 nuget 包。

尝试在其他网络下载软件包,也许它可以帮助你!

于 2017-12-06T16:22:58.807 回答
0

Talbott 的回答对我不起作用,因为我的缓存是空的。但是,如果您在另一个解决方案中使用了包,则可以将所需项目从另一个解决方案的“包”文件夹复制到目标解决方案中的包文件夹。

如果您没有在目标解决方案中安装包,您可能需要将以下内容添加到包文件夹中的 repositories.xml 文件中:

<?xml version="1.0" encoding="utf-8"?>
<repositories>
</repositories>

之后,这些包似乎已安装在我的解决方案中,并且我能够将它们添加到项目中。

附加说明:我必须在解决方案级别使用“管理解决方案的 NuGet 包”选项将包添加到单个项目。即使软件包已安装在解决方案中,从控制台使用 Install-Package 仍会返回 503。

于 2012-08-20T04:17:20.523 回答
0

如果您使用 VPN 客户端(例如 Cisco AnyConnect)并且您最近更新了 VPN 证书,您也可能会收到此错误。该问题可能会在您更新证书之后但在您重新启动之前发生。重新启动可以解决问题。

于 2016-06-30T12:21:54.427 回答
0

收到 503 的另一个可能原因:如果您使用的是Azure DevOps 源,则NuGet 包限制为 500 MB

于 2022-01-25T20:29:33.003 回答
0

这是一个很老的问题,但我刚刚遇到了同样的问题。就我而言,这是因为我在 Visual Studio 包管理器中配置了多个 nuget 包源。在我的公司,我们使用 NuGet 来获取主流软件包,并使用 MyGet 来获取我们自己的东西。

当我尝试提取一个非常大的包时,它以 503 代码失败,并且错误链接看起来很奇怪,其中包含 MyGet 而不是 NuGet。事实证明,尽管将 NuGet 选为当前源,Visual Studio 包管理器仍试图从另一个源中提取它。禁用其他来源,然后继续下载修复它。

希望它能帮助像我一样偶然发现这个线程的人。

于 2019-10-22T01:00:13.993 回答