【发布时间】:2022-11-04 20:03:01
【问题描述】:
我正在更新一个旧的 .Net 项目,它针对 .Net Framework 4.8。 问题是我正在使用 HttpClient 将一些数据发布到端点,使用类似于下面的代码(为便于阅读而编辑)
var jsonString = JsonConvert.SerializeObject(myData, jsonSettings);
var _client = new HttpClient();
var content = new StringContent(jsonString, Encoding.UTF8, "application/json");
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls13;
var response = _client.PostAsync(endpoint, content).Result;
问题是它抛出“请求被中止:无法创建 SSL/TLS 安全通道”。例外。使用 Wireshark 我可以看到连接到达正确的端点,并且远程端点向客户端握手返回致命响应,但我的客户端正在尝试使用 TLS1.0。我正在使用 System.Net.Http v4.3.4,如果添加或删除,设置 SecurityProtocolType.Tls13 似乎没有什么区别(因为 .Net 4.8 可能不需要它)。
如何让我的项目使用 Tls1.3 ?
我有另一个调用相同端点的项目,并且工作正常,但我看不出它们之间的区别。
【问题讨论】:
-
您的 app.config (任一项目)中有任何内容吗? IIRC那里有一些影响TLS版本的开关
-
@canton7 - 没什么明显的。我查看了 assemblyBinding 条目,它们引用了与我的其他工作项目相同的版本。