- 我们正在使用一个用 Apache 编写的基于 HTTPS REST 的 Web 服务。
- 我们的客户端是用 .NET 框架 4.5 编写的,使用 System.Net.Http 库和类 HttpClient 进行连接。
- 我们使用的基于 REST 的 Web 服务要求我们在标头中附加证书。
- 以上工作正常。但由于涉及 SSL 协商,请求需要很长时间才能执行(每个请求 300 毫秒)。
问题:如何在 .NET 客户端库中配置/编码 SSL 会话重用,以便后续 Https 连接不必握手并提高性能。
这是我尝试但没有帮助的所有内容:
- 试图设置 httpClient.DefaultRequestHeaders.Connection.TryParseAdd("Keep-alive"); //这里httpClient是HttpClient类的一个实例。
- 尝试改变keep-alive的外壳
- 使用 System.Net.ServicePointManager.SetTcpKeepAlive(true, 10000, 3000) 设置 Tcp Keepalive;// 这就是说,由于 SSL 重新协商发生在 TCP 上,所以保持 Tcp 处于活动状态。
- 将连接 http REST 服务器的 web.config 中的 MaxConnections 值设置为 12。
另一个有趣的方面:当 REST API 实现者使用带有 keep-alive 标头的 Jmeter 调用 HTTPS REST url 时,他们能够重用 ssl 连接并且性能良好(使用 - 63ms 和不使用 - 300ms)。
有人可以帮助我在.NET方面的设置中缺少什么。