【发布时间】:2020-10-08 16:30:08
【问题描述】:
我想通过使用 Manage Nuget Packages 安装 Microsoft ASP.NET Identity Core,但是当我单击安装按钮时出现以下错误:
底层连接已关闭:发送时发生意外错误
【问题讨论】:
-
你能用 NuGet 安装其他包吗?
-
不,我无法安装任何软件包。
标签: nuget
我想通过使用 Manage Nuget Packages 安装 Microsoft ASP.NET Identity Core,但是当我单击安装按钮时出现以下错误:
底层连接已关闭:发送时发生意外错误
【问题讨论】:
标签: nuget
尝试将以下内容粘贴到 .reg 文件中并运行它。然后尝试运行您的 NuGet 命令(无需重新启动)。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319]
"SchUseStrongCrypto"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319]
"SchUseStrongCrypto"=dword:00000001
遇到此问题是因为未启用 TLS1.2(类似于 Tony 的回复)。使用 http 确实不会解决这种情况,因为现在强制执行 TLS1.2,NuGet 重定向到 https。
【讨论】:
这是http://go.microsoft.com 上的 SSL 证书问题。将包源网址更改为http://packages.nuget.org/v1/FeedService.svc/,这对我有用。
【讨论】:
我在使用 Microsoft Visual Studio Premium 2012 的旧客户开发人员 VM 上遇到此错误:
Install-Package : 加载软件包时出错 'https://nuget.org/api/v2/':底层连接已关闭:一个 发送时发生意外错误
通过转到工具 -> 扩展和更新... -> 更新 -> Visual Studio 库并从那里更新 NuGet 包管理器来解决它。
重启后一切正常:
【讨论】:
SchUseStrongCrypto 注册表项,但它也不起作用。重新启动后,我尝试再次更新 NuGet 包管理器,这次它工作了。作为OP,我不再遇到问题。很难说实际修复了什么,也许在我的情况下两者都需要。
自 2020 年 6 月 15 日起,NuGet 已移除对 TLS 1.0 和 1.1 的支持。 见https://devblogs.microsoft.com/nuget/deprecating-tls-1-0-and-1-1-on-nuget-org/
如果您使用的是 VS2013 或更低版本,那么截至此日期,您已经失去了 NuGet 连接,并且您只能通过至少升级到 VS2015 才能使用 NuGet,尽管我建议最迟在发表此评论时升级到 VS2019。
【讨论】:
如果您没有启用 TSL 1.0(在 Server 2012R2 中默认禁用),也会发生这种情况。在这种情况下,您可能会在点击“底层连接已关闭:发送时发生意外错误”错误之前看到一些软件包安装成功。
有关错误的更多详细信息,请使用“详细信息”从命令行运行 nuget install
即
System.Net.WebException:底层连接已关闭:意外错误 或发生在接收。 ---> System.ComponentModel.Win32Exception:客户端 和服务器无法通信,因为它们没有共同的算法
【讨论】:
如果您的防火墙正在执行 SSL 检查,则可能会发生这种情况。您可能需要将 repo 列入白名单。
【讨论】:
这通常与网络服务器没有有效的 SSL 证书有关。无效的 SSL 证书可能是由于它是自签名的且不受 CA 信任,或者证书已被 CA 吊销。
使用未经身份验证的 URL 可能是解决此问题的一种方法,但该问题的解决方案是确保 SSL 证书有效。
【讨论】:
在我的例子中,我们有阻止 .EXE 下载的规则,因此我们在 .nuget 解决方案文件夹中保留了 NuGet.exe 的副本,就在 NuGet.targets 和 NuGet.Config 旁边
无论出于何种原因,新分支中都缺少此功能。
【讨论】: