我搜索了其他答复,对我有用的解决方案是插入
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
在调用失败的服务之前。
但是,我剩下这些问题了。
答案 0 :(得分:2)
TLS 1.2是.NET Framework 4.6.2及更高版本中的默认协议。
如果确保您的应用程序在4.6.2或更高版本的目标框架上运行,则无需包含该行代码。
遇到此问题时,我还必须确保Web.config中的<httpRuntime>
节点明确声明目标框架(例如<httpRuntime targetFramework="4.6.2" />
)
答案 1 :(得分:2)
这是否仅更改该特定应用程序的默认协议?
正确。
由于大多数(所有?)服务现在似乎都需要升级,因此Windows更新为何未更改默认设置?
从技术上讲,这是一个重大更改,因此,通过Windows Update无法将Framework的旧版本选择为新的TLS配置。而是由框架版本完成。
在某些情况下,即使支持TLS 1.0的服务器可以协商1.0,支持TLS 1.0的服务器也会错误地处理提供TLS 1.2的客户端。
Microsoft的The TLS guide建议使用不同的方法来处理框架的版本。
.NET Framework上的由于服务需要它,为什么服务的开发人员提供的库未将其包含在他们的代码中?
TLS也取决于Windows的版本。客户端库无法合理地强制使用特定版本的TLS,除非它们也提供了自己的TLS实现。
我应该读些什么,以告诉我Windows更新不是提供升级到TLS 1.2的功能
那是不幸的-我前面提到的指南有助于理解该问题以及不同的补救方法。希望将来的错误和配置会更加清楚。