SecurityProtocol在.NET 2.0中使用1.2

时间:2017-05-23 12:13:28

标签: c# asp.net .net

我有一个为.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编译的应用程序。

2 个答案:

答案 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支持的补丁

请查看以下链接:https://support.microsoft.com/en-ca/help/3154519/support-for-tls-system-default-versions-included-in-the--net-framework

您需要更新的特定注册表项位于上面的文章中。我在开发和生产环境中运行它,它没有问题。您还需要确保同时更新客户端和服务器上的默认协议。这篇文章应该包含你需要的一切。