HttpWebRequest 调用 GetResponse,使用 .net 4.5 失败但使用 net 4.6 通过

HttpWebRequest call to GetResponse, fails using .net 4.5 but passes using net 4.6

我们刚刚推出了一项新服务,但在以 .Net 4.5 框架为目标时,我们无法从非常基本的 c# 控制台应用程序连接到该服务。

我们首先在 ASP MVC 站点中发现了问题,但已将其分解为最简单的简单控制台应用程序以帮助隔离问题

代码片段(没有其他任何内容):

string myURL = @"https://<myurl>.com/<myurl>";
using (var httpClient = new HttpClient())
{                
    var request = (HttpWebRequest)WebRequest.Create(myURL);
    request.Method = "GET";
    request.ContentLength = 0;
    request.ContentType = "text/xml";

    using (var response = (HttpWebResponse)request.GetResponse())
    {
        if (response.StatusCode != HttpStatusCode.OK)
        {
            ...
        }
        else
        {
            ...
        }
    }                
}

会发生什么

服务信息

其他差异

设置要点

有用过吗?

是的!

我在问什么

谢谢, 铝。

这通常是服务器使用 TLS v1.2 引起的。我认为 Net4.5 默认为 TLS v1.1,因此您必须将此添加到您的代码中:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;