Rag*_*ghu 1 .net dotnet-httpclient .net-4.7
我在.NET Framework 4.7.1中有以下代码:
using (var handler = new HttpClientHandler())
{
handler.SslProtocols = SslProtocols.Tls12;
...
}
Run Code Online (Sandbox Code Playgroud)
此代码适用于我的开发计算机(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.
Run Code Online (Sandbox Code Playgroud)
群集节点正在运行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
Run Code Online (Sandbox Code Playgroud)
它显示在另一台本地服务器机器上:
// 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
Run Code Online (Sandbox Code Playgroud)
如您所见,装配位置不同,但我不知道这意味着什么.此外,我的本地计算机具有此注册表项值:
"Software\\Microsoft\\NET Framework Setup\\NDP\\v4\\Full\\Release": "461802"
Run Code Online (Sandbox Code Playgroud)
和群集节点有这个:
"Software\\Microsoft\\NET Framework Setup\\NDP\\v4\\Full\\Release": "461310"
Run Code Online (Sandbox Code Playgroud)
On all other OS versions: 461310
Run Code Online (Sandbox Code Playgroud)
但是我的机器上的版本"461802"甚至没有列在那里!
有人可以提供有关如何克服此错误的指导(不更改我的代码)吗?
虽然您不应该在dotnet/announcement repo中发布该问题但我不确定为什么人们会在这里向您提出问题; 这是一个合法的问题.
该属性HttpClientHandler.SslProtocols是在.NET Framework 4.7.1中添加的,但实际上并未实现(您可以将其称为错误).
这是通过.NET Framework 4.7.2修复的,这可能是它在您的开发机器上运行的原因.
| 归档时间: |
|
| 查看次数: |
934 次 |
| 最近记录: |