【发布时间】:2021-05-04 10:01:15
【问题描述】:
我有一个 asp.net core 2.2 Angular 11 项目进展顺利,现在我不知道为什么我在查询中收到错误“无法建立 SSL 连接”。
我创建了一个 ASP.net core 5 Web API 项目(没有 Angular 和没有视图)来将 Angular 与 .net 分开。 但问题仍然存在。我已经解决这个错误一个星期了,我尝试了所有可以在互联网上找到的关于这个问题的方法,但总是出现同样的问题。
下面是我通过 Postman 发起请求后的完整错误。
我在 Windows 10 下的本地。
HttpClientHandler clientHandler = new HttpClientHandler();
clientHandler.ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => { return true; };
client = new HttpClient(clientHandler);
Task<HttpResponseMessage> reponse = client.PostAsJsonAsync(url, user);
var result = reponse.Result.Content.ReadFromJsonAsync<Result<User>>().Result;
错误:
System.AggregateException:发生一个或多个错误。 (无法建立 SSL 连接,请参阅内部异常。)\r\n ---> System.Net.Http.HttpRequestException:无法连接 SSL 已建立,请参阅内部异常。\r\n ---> System.IO.IOException: 无法确定帧大小或收到损坏的帧。\r\n 在 System.Net.Security.SslStream.ReceiveBlobAsync[TIOAdapter](TIOAdapter 适配器)\r\n 在 System.Net.Security.SslStream.ForceAuthenticationAsync[TIOAdapter](TIOAdapter 适配器,布尔值 receiveFirst,字节 [] reAuthenticationData,布尔值 isApm)\r\n 在 System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(布尔 异步,流流,SslClientAuthenticationOptions sslOptions, CancellationToken cancelToken)\r\n --- 内部异常结束 堆栈跟踪 ---\r\n 在 System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(布尔 异步,流流,SslClientAuthenticationOptions sslOptions, CancellationToken cancelToken)\r\n 在 System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage 请求、布尔异步、CancellationToken cancelToken)\r\n at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage 请求、布尔异步、CancellationToken cancelToken)\r\n at System.Net.Http.HttpConnectionPool.GetHttpConnectionAsync(HttpRequestMessage 请求、布尔异步、CancellationToken cancelToken)\r\n at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage 请求,布尔异步,布尔 doRequestAuth,CancellationToken 取消令牌)\r\n 在 System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage 请求, 布尔异步,CancellationToken cancelToken)\r\n at System.Net.Http.DiagnosticsHandler.SendAsyncCore(HttpRequestMessage 请求、布尔异步、CancellationToken cancelToken)\r\n at System.Net.Http.HttpClient.SendAsyncCore(HttpRequestMessage 请求, HttpCompletionOption 完成选项,布尔异步,布尔 emitTelemetryStartStop, CancellationToken cancelToken)\r\n --- 内部异常堆栈跟踪结束 ---\r\n at System.Threading.Tasks.Task.Wait(Int32 毫秒超时, CancellationToken cancelToken)\r\n 在 System.Threading.Tasks.Task.Wait()\r\n 在 FlytaggerWebApi.Controllers.CommandController.setCampagne(Campagne campagne) 在 userController.cs:line 455
【问题讨论】:
-
通常在代码开头添加跟随。否则,由于用户设置、网络版本和操作系统的组合,它非常复杂:ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
-
我添加了这个:ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls12 |SecurityProtocolType.Tls11 |安全协议类型.Tls;和 clientHandler.SslProtocols = SslProtocols.Tls12 | SslProtocols.Tls11 | SslProtocols.Tls;到我的代码,但它不会改变任何东西,总是同样的错误。我要疯了。
-
SSL、TLS 1.0 和 1.1 已过时,不应添加,会导致错误。你用的是什么机器?内核可能需要更新。
标签: c# asp.net-core ssl