Asp.net core System.Net.Http.HttpRequestException:无法建立SSL连接,请参阅内部异常
我使用的是ASP.NET Core 2.2,其中我使用的是来自非安全门户的安全API(例如)。 但我在请求API时遇到以下错误: System.Net.Http.HttpRequestException:无法建立SSL连接,请参阅内部异常 我已经尝试了Asp.net core System.Net.Http.HttpRequestException:无法建立SSL连接,请参阅内部异常,asp.net-core,httpclient,servicepointmanager,Asp.net Core,Httpclient,Servicepointmanager,我使用的是ASP.NET Core 2.2,其中我使用的是来自非安全门户的安全API(例如)。 但我在请求API时遇到以下错误: System.Net.Http.HttpRequestException:无法建立SSL连接,请参阅内部异常 我已经尝试了ServerCertificateCustomValidationCallback,ServerCertificateCustomValidationCallback,ServicePointManager.SecurityProtocol等,但没
ServerCertificateCustomValidationCallback
,ServerCertificateCustomValidationCallback
,ServicePointManager.SecurityProtocol
等,但没有成功
当我使用ServicePointManager.SecurityProtocol=SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12 | SecurityProtocolType.Ssl3代码>,然后我得到一个错误:
System.NotSupportedException:不支持请求的安全协议“
我已经尝试过的示例代码::
一,
二,
三,
异常消息要求您查看InnerException。您尝试过吗?什么内部?(建议内部根本原因)错误与SSL有关。错误为::System.IO.IOException:由于意外的数据包格式,握手失败。位于System.Net.Security.SslState.StartReadFrame(字节[]在System.Net.Security.SslState.PartialFrameCallback(AsyncProtocolRequest asyncRequest)处的缓冲区、Int32 readBytes、AsyncProtocolRequest asyncRequest(asyncRequest asyncRequest)——从引发异常的上一个位置开始的堆栈结束跟踪——在System.Net.Security.SslState.ThrowifeException()处位于System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult-lazyResult)解决方案::ServicePointManager.SecurityProtocol=SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12 | SecurityProtocolType.Ssl3;在windows中工作,但在ubuntu中不工作。您有没有设法解决过这个问题?我也有同样的问题。我尝试了所有我能找到的方法,但都没有效果。
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls |
SecurityProtocolType.Tls11 |
SecurityProtocolType.Tls12 |
SecurityProtocolType.Ssl3;
using (var httpClientHandler = new HttpClientHandler())
{
httpClientHandler.ServerCertificateCustomValidationCallback =
(message, cert, chain, errors) => { return true; };
using (var client = new HttpClient(httpClientHandler))
{ // somecode }
}
var handler = new HttpClientHandler
{
ServerCertificateCustomValidationCallback =
(httpRequestMessage, cert, cetChain, policyErrors) =>
{
return true;
},
SslProtocols = SslProtocols.Tls12 |
SslProtocols.Tls11 |
SslProtocols.Tls |
SslProtocols.Ssl3 |
SslProtocols.Ssl2 |
SslProtocols.Default |
SslProtocols.None
};