SecurityProtocolTypeExtensions.Tls12; 在当前背景下不存在

tri*_*ati 4 c# asp.net .net-3.5 tls1.2

我正在将安全协议更新到我现有的3.5 .net框架应用程序,以便顺利地运行我的支付网关.我添加了以下代码

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolTypeExtensions.Tls12;
Run Code Online (Sandbox Code Playgroud)

在我的Global.asax,Application_Start但它给我编译时错误

当前上下文中不存在名称"SecurityProtocolTypeExtensions"

我正在关注此链接是否支持 Microsoft提供的Windows 7 SP1和Server 2008 R2 SP1上的.NET Framework 3.5.1中包含的TLS系统默认版本.

更新1:

还尝试了上面的链接,在项目中添加了两个文件,现在我得到一个例外" System.NotSupportedException:不支持所请求的安全协议"

更新2:

按照乔恩戴维斯的建议尝试,但仍然没有运气.同样的例外System.NotSupportedException

Jon*_*ies 5

修复程序在您链接到的文章中说明:

要包含对TLS v1.2的支持,请在项目中包含源文件...

换句话说 - 您需要将文章中的SecurityProtocolTypeExtensionsSslProtocolExtensions类型添加到您自己的项目中.

这是一个丑陋的黑客攻击,但是因为TLS 1.2是 .NET 3.5 之后发布的,所以需要它.

或者,如果您想避免使用这些扩展并且不介意代码中未标记的幻数,您可以忽略文章中的代码,只需设置它:

System.Net.ServicePointManager.SecurityProtocol = (SecurityProtocolType)0x00000C00;
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢@Jon Davies 你为我节省了几天的工作时间,而不是针对 .Net 4.5,我使用了你的 hack,它奏效了! (2认同)