找不到System.Net.SecurityProtocolType.Tls12定义

Hoc*_*Lim 4 .net c# ssl tls1.2

我正在尝试将以下代码行添加到网站项目中的Global.asax文件中.

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

vs2012 IntelliSense显示存在Tls12定义.但构建是说定义不存在(参见屏幕截图).

屏幕截图

我已经尝试将System.Net.dll添加到项目的bin文件夹中,但构建仍然失败.知道我怎么能解决这个问题?

fig*_*olu 24

仅在Framework 4.0上缺少SecurityProtocolType.Tls11和SecurityProtocolType.Tls12枚举值.

SecurityProtocolType数值:
SystemDefault(0)
Ssl3(48 - 0x30)
Tls(192 - 0xC0)
Tls11(768 - 0x300)在Framework 4.0
Tls12(3072 - 0xC00)上缺少Framework 4.0

在Framework 4.0上,如果要允许TLS 1.0,1.1和1.2,只需替换:

SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12  
Run Code Online (Sandbox Code Playgroud)

通过:

(SecurityProtocolType)(0xc0 | 0x300 | 0xc00)
Run Code Online (Sandbox Code Playgroud)


Teo*_*ahi 10

你在.net 4.0吗?你应该至少使用4.5.您可以尝试更新Web目标框架版本: .NET Framework 4.0中的TLS 1.2


Jos*_*345 8

TLS 以及如何避免连接错误。

  • .NET 4.6 及更高版本。您不需要做任何额外的工作来支持 TLS 1.2,默认情况下支持它。
  • .NET 4.5。支持 TLS 1.2,但它不是默认协议。您需要选择加入才能使用它。以下代码将使 TLS 1.2 默认,请确保在连接到安全资源之前执行它:
    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
Run Code Online (Sandbox Code Playgroud)
  • .NET 4.0。不支持 TLS 1.2,但如果您的系统上安装了 .NET 4.5(或更高版本),那么即使您的应用程序框架不支持,您仍然可以选择 TLS 1.2。唯一的问题是 .NET 4.0 中的 SecurityProtocolType 没有 TLS1.2 的条目,因此我们必须使用此枚举值的数字表示形式:
    ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
Run Code Online (Sandbox Code Playgroud)
  • .NET 3.5 或更低版本。不支持 TLS 1.2 (*),并且没有解决方法。将您的应用程序升级到框架的最新版本。

就我个人而言,在我的.Net 4.0框架上使用了一些asp经典文件:

    ServicePointManager.SecurityProtocol = (SecurityProtocolType)(0xc0 | 0x300 | 0xc00);
Run Code Online (Sandbox Code Playgroud)

https://blogs.perficient.com/2016/04/28/tsl-1-2-and-net-support/