【问题标题】:asp.net core 5, Error : The SSL connection could not be establishedasp.net core 5,错误:无法建立 SSL 连接
【发布时间】: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


【解决方案1】:

我发现出了什么问题,我尝试的一切都没有效果是正常的。

我将我的应用程序分为几个项目。有一个 RESTFULL API 项目(我称之为业务应用程序)没有外部访问和查询数据库,网站或移动应用程序无法直接调用此项目。

为此,我创建了另一个 web api 项目(我称之为流程)来建立 2 之间的链接。在出现上述错误之前一切正常。

我刚刚创建了一个新表,因此在业务应用程序中创建了一个新控制器,并且只有在我调用这个新控制器的功能时才会出现错误。所有其他调用都没有任何问题(当流程调用业务应用程序时,我没有任何问题,除非它调用新控制器时)。

所以我看看这个控制器有什么问题,其他控制器有什么不同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多