Nuget连接尝试失败"无法加载源的服务索引"

Dar*_*der 39 .net c# visual-studio nuget

在尝试连接到Nuget时,获取下面的错误,然后我无法连接:

[nuget.org]无法加载源https://api.nuget.org/v3/index.json的服务索引 .发送请求时发生错误.无法连接到远程服务器连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立的连接失败,因为连接的主机无法响应68.232.34.200:443

我可以https://api.nuget.org/v3/index.json在我的浏览器上访问.

它不是重复的.其他答案并没有解决我的问题.

Pie*_*amy 27

由于身份验证问题也可能会发生这种情况,因此您可能需要重新对 Visual Studio 进行身份验证。

在这种情况下,您只需从文件所在的文件夹package.config(通常是项目的根目录)运行以下命令:

dotnet restore --interactive
Run Code Online (Sandbox Code Playgroud)

系统将提示您从浏览器访问配对 URL 并输入配对代码,例如:

要登录,请使用 Web 浏览器打开页面https://microsoft.com/devicelogin并输入代码 C2DEJ87H 进行
身份验证。

这需要 .NET CLI,它包含在 .NET Core SDK 中,可以从https://learn.microsoft.com/en-us/dotnet/core/install/windows安装

此外,如果运行命令时没有出现登录提示nuget restore,则您的安装可能缺少artifacts-credprovider nuget 插件,您可以使用以下命令安装该插件:

iex "& { $(irm https://aka.ms/install-artifacts-credprovider.ps1) }"
Run Code Online (Sandbox Code Playgroud)


jan*_*mus 25

删除 %AppData%\NuGet\NuGet.Config 并重新启动 VS2019 对我有用。

类似于https://github.com/NuGet/Home/issues/3281

  • 如果这对您不起作用,只需确保“\Roaming”还不是“%APPDATA%”路径的一部分。 (21认同)
  • 我正在使用 VS 2022,这对我有用,只需删除文件,重新启动 VS,然后我从 nuget 包管理器控制台执行 dotnet Restore。 (10认同)
  • 打开文件 %AppData%\Roaming\NuGet\NuGet.Config 并查看是否有一些 nuget 源指向 3rd 方组件,如 Telerik、devexpress 等,但您的系统上不再有这些组件 (4认同)
  • 在这种情况下,MacOS 用户应该做什么? (4认同)

小智 17

我在尝试浏览 NuGet 包时遇到相同的错误,以解决以下步骤中的相同问题:

1-去 %appdata%\NuGet\NuGet.config

2-验证该配置中提到的网址

3-删除不需要的网址

4-重新启动visual studio并检查

  • 非常有帮助,可以访问此 nuget 设置/配置位置:%appdata%\NuGet\NuGet.config。就我而言,我试图安装一个 dotnet 全局工具,并且由于某些“令人沮丧”的原因,它一直尝试使用 myget nuget 源,即使没有任何理由。我确实列出了 myget 源(这是必要的,因为它在一个项目中使用),但主要的 nuget.org 源/url 仍然列在第一,而且这个安装实际上并没有上传到任何一个包注册表,只是在本地计算机上。无论如何,通过暂时删除此文件中的 myget 源,它突然起作用了。 (3认同)
  • 这为我解决了这个问题。 (2认同)

Jon*_*how 17

如果您看到如下错误,则可能需要设置 Azure Artifacts 凭据,请参阅此Github 链接,您可以通过运行 powershell 脚本或手动安装凭据提供程序。

error :   Response status code does not indicate success: 401 (Unauthorized).
Run Code Online (Sandbox Code Playgroud)

  • 这就是(最终)帮助我的。 (2认同)

Edd*_*SFT 13

您需要将代理设置添加到Nuget.Config文件中.有关详细信息,请参阅此链接:Nuget配置部分Nuget代理设置.

  • 配置文件应位于 %AppData%\NuGet\ 或 C:\Users\WindowsLoginName\AppData\Roaming\NuGet (5认同)
  • 陷入同样的​​问题 (3认同)
  • 我也遇到了这个问题,并在命令行中将其删除,但是现在问题又回来了,但是我目前没有设置代理。任何想法仍然可能出问题吗? (2认同)
  • 对我来说,我在 docker 构建期间恢复了 nuget 包。为此,必须将 NuGet.config 复制到 /root/.nuget/NuGet/NuGet.Config。这是私人源,NuGet.Config 中的 PAT 已过期。刷新 PAT 解决了该问题。 (2认同)

小智 9

就我而言,我在不知不觉中完全退出了我的工作帐户。重新登录我的视觉工作室帐户解决了这个问题。

  • 这就是我的情况,我更改了密码。VS2022 看起来我仍然登录。单击我的个人资料显示我必须重新输入我的凭据 (3认同)

Raz*_*azi 8

按下Win+ R并打开注册表编辑器regedit Enter

导航:

\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Client
Run Code Online (Sandbox Code Playgroud)

DisabledByDefault键0 的值更改为1

然后重新启动Visual Studio。

进一步了解TLS

  • 确切地说,我在协议文件夹下没有看到任何文件夹。另外,我从 Internet Explorer 检查了 Internet 选项,检查了 TLS 1.1 和 TLS 1.2。不知道为什么注册表编辑器中的协议下没有文件夹。有人可以告诉我我在这里缺少什么吗?@EduardoÁlvarez (10认同)
  • 我和OP有同样的问题。在我的 Windows 10 盒子注册表中,Protocols 文件夹为空(没有 TLS 1.3 选项,里面也没有任何内容)。 (9认同)
  • 通过解释为什么这可以解决问题来改进您的答案。 (6认同)
  • 对于那些说 TLS 1.3 密钥不存在的人。只需创建它们即可。在此之后它将起作用 (6认同)
  • **据我所知**,在 Windows 10 默认设置中,此注册表项 `DisabledByDefault` 值为 1。但是,Windows 更新程序或 Visual Studio 更新程序可能会将其更改为 0。这就是 Visual Studio 无法连接“https”安全站点的原因。 (3认同)

小智 8

简单的 :

  1. 关闭 VS2019
  2. C:\Users\you\AppData\Roaming\NuGet
  3. 删除文件NuGet.Config
  4. 重新启动VS2019

你可以走了!

  • /sf/answers/4378186571/ 的副本 (3认同)
  • 或%AppData%\NuGet (2认同)

小智 7

设置(PC 的全局设置)> 网络和 Internet > 代理 > 自动代理设置 > 并将自动检测设置设置为关闭。

  • 这是 2022 年唯一对我有用的事情。 (2认同)

小智 7

我在尝试连接到我的私有 TFS 服务器而不是公共 NuGet API 服务器时遇到了类似的问题。由于某种原因,我在 AD 服务器和 TFS 服务器之间遇到了问题,因此它总是返回 401。NuGet 配置文章显示您可以将 AD 用户名和密码添加到配置文件中,如下所示:

  <packageSourceCredentials>
      <vstsfeed>
          <add key="Username" value="yourname@company.com" />
          <add key="Password" value="this is an encrypted password" >
          <!-- add key="ClearTextPassword" value="not recommended password" -->
      </vstsfeed>
  </packageSourceCredentials>
Run Code Online (Sandbox Code Playgroud)

这不是一个非常理想的解决方案,更多的是一个临时解决方案,直到我找出 AD 服务器的问题所在,但这应该可以解决问题。

  • 对于想要设置凭据的任何人,无需手动编辑配置,而是使用 NuGet 进行设置 nuget.exe' resources add -name 'My Packages' -source 'https://pkgs.dev.azure.com/myorg/myid /_packaging/mypackages/nuget/v3/index.json'-用户名'。' -password '&lt;个人访问令牌&gt;' (3认同)
  • 这对我来说很有效。就我而言,我必须取消注释“ClearTextPassword”并注释掉“密码”行。 (2认同)

Dav*_*Caz 6

就我而言,问题在于我是在较旧的 Win7 虚拟机上构建的。

我从https://github.com/NuGet/NuGetGallery/issues/8176#issuecomment-683923724找到了此修复:

nuget.org 今年早些时候开始强制使用 TLS 1.2(并放弃了对 TLS 1.1 和 1.0 的支持)。Windows 7 默认情况下禁用 TLS 1.2(检查注册表中DisabledByDefault的值 )。HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client要启用支持,请确保您安装了更新 (*) 并打开支持:

reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" /v DisabledByDefault /t REG_DWORD /d 0 /f /reg:32
reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" /v DisabledByDefault /t REG_DWORD /d 0 /f /reg:64
reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" /v Enabled /t REG_DWORD /d 1 /f /reg:32
reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" /v Enabled /t REG_DWORD /d 1 /f /reg:64
Run Code Online (Sandbox Code Playgroud)

提到的 (*) 更新是 Microsoft kb3140245: Windows 7 更新 (KB3140245)

我安装了更新,重新启动(按照更新的要求),添加了这些注册表项,然后 Nuget 工作正常。


Ale*_*xei 5

尝试通过Jenkins(配置为服务,默认情况下使用本地系统帐户)运行nuget.exe时,我偶然发现了此问题。我已经编辑C:\Windows\System32\config\systemprofile\AppData\Roaming\NuGet\NuGet.Config了如下文件:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <config>
        <add key="http_proxy" value="http://proxy_hostname_or_ip:3128" />
        <add key="https_proxy" value="http://proxy_hostname_or_ip:3128" />
    </config>

  <packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
  </packageSources>

</configuration> 
Run Code Online (Sandbox Code Playgroud)

为了测试命令提示符,可以通过PSTools启动:

psexec -i -s CMD
Run Code Online (Sandbox Code Playgroud)

并在新创建的cmd窗口中运行实际测试(作为本地系统运行):

path_to_nuget\nuget.exe restore "path_to_solution\theSolution.sln"
Run Code Online (Sandbox Code Playgroud)