[英]SSL Handshake exception for HTTP Get method - ASP.NET core 2.1
我正在尝试使用asp.net core 2.1调用rest方法,但是即使我在此调用中使用了http,也一直在获取ssl异常。 我使用的代码是:
public async Task<bool> SyncTickets()
{
try
{
HttpClient client = new HttpClient();
var path = "http://testdesk.vmw.be:8082/helpdesk/WebObjects/Helpdesk.woa/ra/PriorityTypes?username=admin&apiKey=bJZw2jP8wgtyGXI736K6DfUiEjJYTLuqC8fGuOBN";
Ticket ticket = new Ticket();
HttpResponseMessage response = await client.GetAsync(path);
if (response.IsSuccessStatusCode)
{
var responseMsg = await response.Content.ReadAsAsync<Object>();
return true;
}
return false;
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
return false;
}
例外是:
{System.Net.Http.HttpRequestException:无法建立SSL连接,请参阅内部异常。 ---> System.IO.IOException:握手由于意外的数据包格式而失败
GetAsync
方法上发生异常。 当我使用相同的路径测试低谷邮递员或浏览器时,它工作得很好,我得到了响应。
知道我在这里缺少什么吗?
也许您的服务器仍然需要加密并重定向到https?
如果是这样,并且https仍在创建HttpClient
之前添加报告:
ServicePointManager.ServerCertificateValidationCallback +=
(sender, cert, chain, sslPolicyErrors) => true;
这将接受所有证书。 此设置是您的应用程序的全局设置。 请勿在生产中使用它。 如果您的服务器使用自签名证书或内部CA颁发的证书,请仅将其用于测试。 在生产中添加对内部CA的适当验证,或仅接受特定的自签名证书 。 浏览器可能通过域控制器或通过组策略在PC上添加了内部证书或CA,因此它们不会报告它们不受信任。
另外,对于https,您可以显式使用TLS协议。 在创建HttpClient
之前添加以下行,然后重试:
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
如果在服务器上定义了协议集,则可以缩小协议列表范围以仅启用实际支持的协议。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.