希望有人可以帮助解决这个问题.最近我们的机器更新了KB4344167,其中包括.NET 4.7.1的安全更新. 不幸的是,这个更新破坏了我们的代码Webrequest.当我们运行下面的代码时,我们收到此错误:
请求已中止:无法创建SSL/TLS安全通道.
// Create a request for the URL.
WebRequest request = WebRequest.Create(url);
//specify to use TLS 1.2 as default connection
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
request.Timeout = int.Parse(configmanager.GetSetting("Webtimeout"));
// Set proxy
request.Proxy = WebRequest.DefaultWebProxy;
request.Proxy.Credentials = CredentialCache.DefaultCredentials;
// Define a cache policy for this request only.
HttpRequestCachePolicy noCachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore);
request.CachePolicy = noCachePolicy;
ServicePointManager.ServerCertificateValidationCallback = (s, cert, chain, ssl) => true;
// Get the response.
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Run Code Online (Sandbox Code Playgroud)
从机器上卸载安全更新时,代码执行正常.我们在上面的代码中遗漏了什么吗?这是我唯一能想到的.
任何帮助是极大的赞赏!
@Damien_The_Unknowner 有正确的答案。最终问题是 ServicePointManager 和 Webrequest.Create 的顺序。反转这些行,以便在 Webrequest.Create 之前定义 ServicePointManager 解决了问题。我仍然不知道为什么在 Create 后添加 ServicePointManager 解决了我们的服务器迁移到 TLS 1.2 时的原始问题,但我们现在不会担心这个问题。
| 归档时间: |
|
| 查看次数: |
1294 次 |
| 最近记录: |