0

无法从 c# 代码访问 https url。试图访问https://blabla url 并访问 get 方法。这是来自 wsdl 的 SOAP 生成的 c# 类。它可以从 SOAP UI 正常工作,但不能从代码工作。我收到错误消息“无法创建 SSL/TLS 安全通道”

4

2 回答 2

1

我已经有过很多次了。

您需要SecurityProtocol在执行该方法之前设置。您尝试发出的 HTTP 请求期望使用传输层安全性发送请求。

要在您的请求中支持 TLS,请在触发 HTTP 请求之前使用以下代码(将其设置为 Tls 1.2): System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;

您可以从此 URL 找到有关不同设置的更多信息: https ://docs.microsoft.com/en-us/dotnet/api/system.net.securityprotocoltype?view=netcore-3.0

如果您发现此枚举不存在(因为您使用的是旧版本的 .NET),您可以使用上面链接中的枚举整数值。此示例支持 Tls 1.2。 System.Net.ServicePointManager.SecurityProtocol = (System.Net.SecurityProtocolType)3072;

于 2019-08-25T13:00:05.153 回答
0

我不确定,除非以下工作。但是您提到您已经尝试设置SecurityProtocol枚举。可能是您的 Web 服务连接需要 TLS 1.3 支持。

尝试以下代码并取消注释以单独开头的每一行,System.Net.ServicePointManager.SecurityProtocol看看它是否解决了您的问题:

            // Uncomment one of these four to see if it works
            //System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;
            //System.Net.ServicePointManager.SecurityProtocol = (System.Net.SecurityProtocolType)3072;
            //System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls13;
            //System.Net.ServicePointManager.SecurityProtocol = (System.Net.SecurityProtocolType)12288;

            using (var client = new WebService())
            {
                data = new JavaScriptSerializer().Deserialize<List<LookupModel>>(client.GetLookupDetails());
                TempData["lookupData"] = data;
            }
于 2019-08-26T14:56:16.100 回答