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

时间:2017-06-20 05:14:16

标签: c# .net .net-3.5 httpwebrequest



我试图使用HttpWebRequest(控制台应用程序)调用Web API。 要上传文件,我使用的是@Cristian Romanescu在此问题上提供的代码段 Upload files with HTTPWebrequest (multipart/form-data)

如果我将req.ProtocolVersion设置为HttpVersion.Version10,当我尝试执行req.GetResponseStream()时,我收到Bad请求。

如果我将req.ProtocolVersion设置为HttpVersion.Version11,当我尝试执行req.GetResponseStream()时,我得无法创建SSL / TLS安全通道。

如果尝试使用POSTMAN发布数据,但即使Postman说无法得到任何回复“。

如果我尝试使用IE-11点击URL,我会收到HTTP 404. [我知道我没有发布实际文件],但Chrome会显示自定义/相应的错误消息。

我尝试了stackoverflow上已经提供的解决方案,但遗憾的是它们无法解决我的问题。

三江源。

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

我做错了两件事。

  1. 服务器希望日期在yyyy-MM-ddTHH:mm:ss,我在yyyy-MM-ddTHH中提供日期:mm:ss.ssss格式(DateTime.UtcNow.ToString(“o”) )。这是无法创建SSL / TLS安全通道

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

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

答案 2 :(得分:0)

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

Create self signed certificate (Server side)

Import self signed certificate (Client side)