【发布时间】:2018-07-13 21:26:02
【问题描述】:
我在我们使用的一个 .NET 应用程序中遇到过这种情况,我想知道它的实际作用。
System.Net.ServicePointManager.SecurityProtocol |= System.Net.SecurityProtocolType.Tls12;
我知道|= 运算符是x = x | y 的快捷方式,但那是位运算符。
它对安全协议有什么作用?
【问题讨论】:
-
它仍然是位运算符。枚举只是其根的整数。使用 |和 & 与 enums 的工作方式与将它们与 int 一起使用的方式完全相同。您只需要小心为您的枚举选项提供适当的(例如 2 的幂)值。
-
该运算符与安全协议无关,因为它只是一个标志的设置。可以在任何枚举上完成(或者可能只是标记枚举)。
-
您正在向当前的
ServicePointManager.SecurityProtocol配置添加(从而启用)Tls1.2 协议。如果将其添加到基本配置 (SecurityProtocolType.SystemDefault= 0),这意味着将仅启用 Tls1.2。SystemDefault表示(通常,没有任何注册表修改)Ssl 3.0 和 Tls 1.0。