HTTPWebRequest 无法创建 SSL/TLS 安全通道

HTTPWebRequest Could not create SSL/TLS secure channel



我正在尝试使用 HttpWebRequest(控制台应用程序)调用 Web API。 要上传文件,我正在使用@Cristian Romanescu 提供的代码片段来回答这个问题

如果我将 req.ProtocolVersion 设置为 HttpVersion.Version10,当我尝试执行 req.GetResponseStream().
[=12= 时收到错误请求]

如果我将 req.ProtocolVersion 设置为 HttpVersion.Version11,我得到 Could not create SSL/TLS secure channel. 当我尝试做 req.GetResponseStream().

如果尝试使用 POSTMAN post 数据,但即使是 Postman 也说 无法得到任何响应"。

如果我尝试使用 IE-11 访问 URL,我会收到 HTTP 404。[我知道我没有 post 实际文件],但 Chrome 显示custom/appropriate 错误信息。

我尝试了 Whosebug 上已经提供的解决方案,但不幸的是它们没有解决我的问题。

谢谢。

您尝试过哪种解决方案?如果您还没有尝试以下内容,那么值得尝试 - 在实际调用服务之前写下以下内容:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; 

尝试从您的服务器创建自签名证书并将其添加到您的客户端计算机。

Create self signed certificate (Server side)

Import self signed certificate (Client side)

我做错了两件事。

  1. 服务器需要 yyyy-MM-ddTHH:mm:ss 格式的日期,我以 yyyy-MM-ddTHH:mm:ss.ssss 格式提供日期(DateTime.UtcNow.ToString("o"))。这是 Could not create SSL/TLS secure channel

  2. 的原因
  3. 服务器也需要请求正文中的参数。我只将参数作为查询字符串传递。这是 HTTP 404

  4. 的原因

在这个过程中,我请了团队外的一个人帮忙。他让我看看是否有任何与 SSL 相关的错误。为此,他让我添加 System.Net.ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(AcceptAllCertifications); 并定义 AcceptAllCertifications,但事实并非如此。所以要解决这个问题,我必须处理上面提到的事情。