无法从 C# 代码访问 https url。 尝试访问 https://blabla URL 并访问 get 方法。 这是从 WSDL 生成的 SOAP C# 类。 它可以在 SOAP UI 中工作,没有任何问题,但无法从代码中工作。我收到错误为"无法创建 SSL/TLS 安全通道">
我已经遇到过很多次了。
您需要在执行该方法之前设置SecurityProtocol
。您尝试发出的 HTTP 请求需要使用传输层安全性发送请求。
要在请求中支持 TLS,请在触发 HTTP 请求之前使用以下代码(这会将其设置为 TLS 1.2):System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;
您可以从此 URL 中找到有关不同设置的更多信息: https://learn.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;
我不确定,除非以下工作。但是您提到您已经尝试设置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;
}