我在.NET Framework 4.7.1中有以下代码:
using (var handler = new HttpClientHandler())
{
handler.SslProtocols = SslProtocols.Tls12;
...
}
此代码适用于我的开发计算机(Windows 10 Enterprise,Build 17101 / rs4_release.180211-1040;版本1803; OS Build 17101.1000)。
相同的代码(当发布到已安装.net framework 4.7.1的服务结构集群节点时)会导致以下异常:
System.PlatformNotSupportedException: Operation is not supported on this platform.
群集节点正在运行Windows Server 2012 R2数据中心版本6.3(Build 9600)
使用Resharper反编译代码时,我的桌面会显示以下信息:
// Type: System.Net.Http.HttpClientHandler
// Assembly: System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
// MVID: 7D453494-012A-4FA4-9E04-1C64E3A0FB6F
// Assembly location: C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Net.Http\\v4.0_4.0.0.0__b03f5f7f11d50a3a\\System.Net.Http.dll
并在另一台本地服务器上显示以下内容:
// Type: System.Net.Http.HttpClientHandler
// Assembly: System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
// MVID: 641F4770-704A-420A-A419-A4FAF4195ADD
// Assembly location: C:\Windows\Microsoft.NET\Framework\\v4.0.30319\\System.Net.Http.dll
正如您所看到的那样,装配位置不同,但我不知道这意味着什么。此外,我的本地计算机具有此注册表项值:
"Software\\Microsoft\\NET Framework Setup\\NDP\\v4\\Full\\Release": "461802"
和群集节点具有:
"Software\\Microsoft\\NET Framework Setup\\NDP\\v4\\Full\\Release": "461310"
documentation on how to determine the installed framework version说:
On all other OS versions: 461310
但是我的机器上的版本“461802”甚至没有列在那里!
有人可以提供有关如何解决此错误的指导(不更改我的代码)吗?
答案 0 :(得分:9)
虽然您不应该在dotnet / announcement repo中发布该问题,但我不确定为什么人们会在这里向您提出问题;这是一个合法的问题。
在.NET Framework 4.7.1中添加了属性HttpClientHandler.SslProtocols
,但实际上并未实现(您可以将其称为错误)。
.NET Framework 4.7.2修复了这个问题,这可能是它在开发计算机上运行的原因。