首页 > 解决方案 > .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, Func2 endFunction, Action 1 endAction, Task1 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.ValueTask 1.get_Result() at System.Net.Http.HttpConnectionPool.CreateConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Threading.Tasks.ValueTask1.get_Result() 在 System.Net.Http.HttpConnectionPool .WaitForCreatedConnectionAsync(ValueTask1 creationTask) at System.Threading.Tasks.ValueTask1.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,因为我在某处读到该错误应该不那么频繁发生。完全相反的事情发生了。

标签: c#asp.net-core.net-framework-versionsystem.net

解决方案


我以前也遇到过这个问题。在挖掘了 GitHub 问题和各种复制之后,看起来它可能是由于网络不稳定导致的格式错误的 TLS 数据包引起的。由于这是一个框架问题,您所能做的就是尝试捕获错误并重试,并希望有一天能修复它。


推荐阅读