我有一个为.NET 2.0和4.5编译的应用程序,他们需要使用Tls 1.2 SecurityProtocol
连接到API。 .NET 4.5支持Tls 1.2,但.NET 2.0不支持,所以我发现这个技巧显然使Tls 1.2在.NET 2.0中运行:
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
我到目前为止唯一的测试是在我的机器上安装了.NET 4.5,因此我不确定这是否真的可以在只有.NET 2.0的机器上运行它
所以我的问题是,上述解决方案真的在.NET 2.0中运行吗?如果是这样,为什么以及如何?我担心因为我安装了.NET 4.5版本而在我的机器上得到误导性测试结果,即使我正在运行.NET 2.0编译的应用程序。
答案 0 :(得分:2)
否 - 正如您所怀疑的那样,它只是起作用,因为您也安装了.NET 4.5。
请记住,除非您在可执行文件app.config
文件中明确指定运行时版本,否则将使用最高安装版本的Framework。我确定如果你强迫你的应用程序通过配置文件使用.NET 2.0,它会在运行时遇到异常并遇到你突出显示的代码行,因为2.0并不是在其Tls12
枚举版本中定义了值3072(SecurityProtocolType
)。
.NET 2.0的唯一选择是支持TLS 1.2的第三方库,但我更好奇为什么不能将应用程序升级到.NET 4.5或更高版本。
答案 1 :(得分:2)
Microsoft在.NET 3.5(即.NET 2.0)中发布针对TLS 1.2支持的补丁
您需要更新的特定注册表项位于上面的文章中。我在开发和生产环境中运行它,它没有问题。您还需要确保同时更新客户端和服务器上的默认协议。这篇文章应该包含你需要的一切。