【问题标题】:PlatformNotSupportedException for HttpClientHandler.SslProtocol on .NET 4.7.1.NET 4.7.1 上 HttpClientHandler.SslProtocol 的 PlatformNotSupportedException
【发布时间】:2018-02-16 02:16:04
【问题描述】:

我在 .NET Framework 4.7.1 中有以下代码:

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

    ...
}

此代码适用于我的开发机器(Windows 10 企业版,内部版本 17101/rs4_release.180211-1040;版本 1803;操作系统内部版本 17101.1000)。

相同的代码(当发布到已经安装了 .net framework 4.7.1 的服务结构集群节点时)会导致以下异常:

System.PlatformNotSupportedException: Operation is not supported on this platform.

集群节点正在运行 Windows Server 2012 R2 Data Center,版本 6.3(内部版本 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”版本甚至都没有列出来!

有人可以提供有关如何克服此错误的指导(不更改我的代码)吗?

【问题讨论】:

  • 同意。感谢您在此处指出这一点,而不是在回购中做出回应。我已经锁定并关闭了那里的问题。
  • 对不起。很绝望。不会重复。
  • 虽然我完全可以理解当这出现在公告回购中时人们感到恼火,但这实际上并不是拒绝这个问题的理由。撇开格式问题不谈,这实际上是一个非常好的问题,值得积极关注。 – @Raghu 您不耐烦是可以理解的,但在您开始在其他地方做广告之前,请给您的问题更多时间。很可能有人迟早会看到这个问题。

标签: .net dotnet-httpclient .net-4.7


【解决方案1】:

虽然您不应该在 dotnet/announcement 存储库中发布该问题,但我不确定人们为什么在这里对您的问题投反对票;这是一个合法的问题。

属性HttpClientHandler.SslProtocols 是在 .NET Framework 4.7.1 中添加的,但实际上并未实现(您可以称其为错误)。

.NET Framework 4.7.2 已解决此问题,这可能是它在您的开发机器上工作的原因。

【讨论】:

猜你喜欢
  • 2018-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多