VS 2015构建项目报“The underlying connection was closed”错误如何解决
VS 2015 还原NuGet包报错"The underlying connection was closed: An unexpected error occurred on a send." 解决方案
该报错的根本原因是目前公开NuGet源已停止支持TLS 1.0、TLS 1.1等旧安全协议,仅允许TLS 1.2及以上版本的连接,而VS 2015默认运行环境未启用高版本TLS协议,导致无法和NuGet源建立安全连接。
方案1:临时修改包管理器控制台TLS协议(单次生效)
- 打开VS 2015顶部菜单栏的「工具」>「NuGet包管理器」>「包管理器控制台」
- 在控制台中输入以下命令并回车执行:
[Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls12 - 命令执行完成后直接执行NuGet包还原操作即可。
方案2:永久修改系统.NET Framework默认TLS配置(全局生效)
如果需要长期使用VS2015还原NuGet包,推荐使用该方案:
- 按下
Win+R组合键,输入regedit回车打开注册表编辑器
修改注册表前建议右键对应路径选择「导出」进行备份,避免误操作导致系统异常。
- 定位到注册表路径:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 - 在右侧空白区域右键,选择「新建」>「DWORD(32位)值」,依次创建两个配置项:
- 第一个:名称为
SchUseStrongCrypto,数值数据填写1,基数选择十六进制 - 第二个:名称为
SystemDefaultTlsVersions,数值数据填写1,基数选择十六进制
- 第一个:名称为
- 若使用的是64位操作系统,还需要定位到以下路径,重复上述新建配置项的操作:
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319 - 关闭注册表编辑器,重启设备后即可正常还原NuGet包。
方案3:检查NuGet源配置
如果上述方案执行后仍报错,可检查NuGet源地址是否正确:
- 打开VS 2015顶部菜单栏的「工具」>「选项」>「NuGet包管理器」>「包源」
- 确认官方NuGet源的地址为
https://api.nuget.org/v3/index.json,如果地址错误或使用旧版v2源,替换为上述地址后保存重试即可。 - 若使用企业内部私有NuGet源,需确认源服务运行正常,且本地已信任对应SSL证书、已配置正确的代理规则。
内容的提问来源于stack exchange,提问作者Small Bear
相关产品推荐
相关产品推荐

