【问题标题】:NuGet is returning 503 Server UnavailableNuGet 返回 503 服务器不可用
【发布时间】:2012-08-15 10:50:32
【问题描述】:

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

【问题讨论】:

  • 下面的答案只是解决方法。实际解决问题的第一步是找到 Nuget 所指的服务器(为什么不打印 Nuget!)。 503 是一个 http 响应代码。唉,我不知道如何找出 Nuget 收到错误的 URL。

标签: nuget visual-studio-2012 nuget-package nuget-server


【解决方案1】:

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

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

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

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

  • 添加 HTTP_PROXY(或可能 HTTPS_PROXY 或两者)environment variable(s)

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

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

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

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

%appdata%\nuget\nuget.config

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

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

【讨论】:

  • 先生,您是绅士和贵族!
  • 伟大的帖子 - 删除环境变量 HTTP_PROXY 和 HTTPS_PROXY 为我修复了它
  • 不错的一个!花了几个小时研究这个问题:(
  • 这对我不起作用。我没有那些环境变量,我尝试修改 AppData nuget.config 代理元素并删除它们。我还尝试在选项 -> 源代码管理中取消选中“使用代理服务器进行下载”,这似乎也没有什么不同。
  • 请注意,如果您不需要本地(ish)nuget 服务器的代理。比如私有本地repo,可以使用env变量no_proxy
【解决方案2】:

如果您过去使用过该软件包,它可能在您的缓存中。您可以通过进入 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。

【讨论】:

    【解决方案3】:

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

    尝试在其他网络下载包,也许对你有帮助!

    【讨论】:

      【解决方案4】:

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

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

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

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

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          【解决方案6】:

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

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

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

          【讨论】:

            【解决方案7】:

            收到 503 的另一个可能原因:如果您使用的是 Azure DevOps 源,那么NuGet packages are limited to 500 MB

            【讨论】:

              猜你喜欢
              • 2014-10-26
              • 1970-01-01
              • 2020-05-20
              • 1970-01-01
              • 1970-01-01
              • 2021-09-23
              • 2021-05-10
              • 2015-09-01
              • 2011-02-25
              相关资源
              最近更新 更多