无法从 c# 代码访问 https url。试图访问https://blabla url 并访问 get 方法。这是来自 wsdl 的 SOAP 生成的 c# 类。它可以从 SOAP UI 正常工作,但不能从代码工作。我收到错误消息“无法创建 SSL/TLS 安全通道”
2 回答
我已经有过很多次了。
您需要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;
我不确定,除非以下工作。但是您提到您已经尝试设置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;
}