c# - .netcore Web 应用程序因“提供给函数的缓冲区太小”错误而失败
问题描述
我有一个正在运行的 Web 应用程序,它基本上调用 3 个非常基本的 API,这些 API 从第三方检索数据,将其保存在 json 文件中并加载此数据以进行进一步处理。
起初,Web 应用程序运行良好,但随着时间的推移,我开始注意到间歇性发生以下错误:
System.Net.Http.HttpRequestException:无法建立 SSL 连接,请参阅内部异常。---> System.Security.Authentication.AuthenticationException:身份验证失败,请参阅内部异常。---> System.ComponentModel.Win32Exception:提供给函数的缓冲区太小---内部异常堆栈跟踪结束---在 System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken 消息,AsyncProtocolRequest asyncRequest,ExceptionDispatchInfo 异常) 在 System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 在 System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest) 在 System.Net.Security.SslState.ProcessReceivedBlob (Byte[] 缓冲区,Int32 计数,AsyncProtocolRequest asyncRequest)在 System.
1.FromAsyncCoreLogic(IAsyncResult iar, Func
2 endFunction, Action1 endAction, Task
1 promise, Boolean requiresSynchronization) --- 从先前抛出异常的位置结束堆栈跟踪 --- 在 System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancelToken) ---内部异常堆栈跟踪结束 --- 在 System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancelToken) 在 System.Threading.Tasks.ValueTask1.get_Result() at System.Net.Http.HttpConnectionPool.CreateConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Threading.Tasks.ValueTask
1.get_Result() 在 System.Net.Http.HttpConnectionPool .WaitForCreatedConnectionAsync(ValueTask1 creationTask) at System.Threading.Tasks.ValueTask
1.get_Result() 在 System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancelToken) 在 System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancelToken) 在 System.Net.Http.HttpClient .FinishSendAsyncUnbuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts) at System.Net.HttpWebRequest.SendRequest() at System.Net.HttpWebRequest.GetResponse()
我已经在互联网上搜索了高低,但无法找到解决此问题的方法。我最近还将 .netcore sdk 版本更新为 2.1.105 和 Microsoft.NetCore.APP/Microsoft.ASPNetCore.All,因为我在某处读到该错误应该不那么频繁发生。完全相反的事情发生了。
解决方案
我以前也遇到过这个问题。在挖掘了 GitHub 问题和各种复制之后,看起来它可能是由于网络不稳定导致的格式错误的 TLS 数据包引起的。由于这是一个框架问题,您所能做的就是尝试捕获错误并重试,并希望有一天能修复它。
推荐阅读
- google-cloud-platform - Redis ReJSON 模块是否与 Google Memorystore 兼容?
- html - 如何将 example.com/blog.html 更改为 example.com/blog
- javascript - 为什么 api 查询会返回一个空数组?
- c++ - c++ | 冻伤引擎 - 不明白收到的答案?
- kentico - 更改 Kentico 站点的显示名称会取消默认样式表的关联
- angularjs - AngularJS ui-router 如何为同一个状态做多个 URL 变体——比如 ngRoute 时
- amazon-s3 - s3 客户端 get_object(Range=byte_range) 无法检索对象的第一个字节
- php - 从 MySql/PHP 为每行创建新的 HTML 表
- node.js - ionic 2项目中的离子服务返回错误
- tsql - SSRS 报告生成 #Error 没有详细信息