以下代码抛出“platformnotsupportedexception”'此平台不支持操作'
它是作为Web应用程序运行的.NET 4.6.1项目引用的一个NET标准库(已尝试针对1.4和2.0进行编译)。

var handler = new HttpClientHandler();
handler.SslProtocols = SslProtocols.Tls12;

为什么TLS12抛出这个异常,什么是解决方法?

最佳答案

这里的问题是.c>属性不存在于.NETFramework上,它只存在于.NETCARE中。
您可以在SslProtocols的文档中看到这一点。
.NET Framework
.NET Core
在.NET框架中,您必须通过HttpClientHandler设置它,即

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11;

要在.NET标准PCL中实现这一点,您很可能需要对NETStAMARD2.0和NET461进行交叉编译,因为我不确定它是否仍然存在于.NETFrase/.NETCARE中。
编辑:
或者,从PCL中删除它,并通过上面的静态属性在.NET框架应用程序中全局设置它。

07-24 15:46