我遇到了从命令行调用NuGet.exe的问题。
nuget.exe restore solution.sln
在我的本地机器上,这个命令行可以顺利运行。在构建服务器上,我立即看到以下错误。
An existing connection was forcibly closed by the remote host
对于背景,我正在为我们的.NET框架应用程序的构建服务器设置Jenkins。
无论我是让Jenkins运行命令,还是自己旋转CMD窗口(管理员或其他)运行,这个错误都会发生。即使是 -Verbosity detailed
标志出现时,什么都没有。
奇怪的是,在Visual Studio 2017内针对解决方案进行还原时,却能正常工作。
以前有人遇到过这种情况吗,或者有什么想法?
所以这原来是TLS的问题。查了很多文章,知道了TLS在各个地方正在发生的一些问题,我找到了这篇文章。在NuGet.org上找到了这篇文章: 废弃的TLS 1.0和1.1
我应用了那里提到的注册表更改(如下),突然间我就超越了这个错误
reg add HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 /v SystemDefaultTlsVersions /t REG_DWORD /d 1 /f /reg:64
reg add HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 /v SystemDefaultTlsVersions /t REG_DWORD /d 1 /f /reg:32
我也见过类似的行为,这是由于我们的IT安全团队封锁了那个特定的域。我可以从我们的开发机器上访问它,但构建服务器(正在运行,不连接到域)被阻止了。