繁体   English   中英

.netcore Web 应用程序因“提供给函数的缓冲区太小”错误而失败

[英].netcore web application failing with 'buffer supplied to a function was too small' error

我有一个正在运行的 Web 应用程序,它基本上调用了 3 个非常基本的 API,这些 API 从第 3 方检索数据,将其保存在 json 文件中并加载此数据以进行进一步处理。

起初,Web 应用程序运行良好,但随着时间的推移,我开始注意到以下错误:

System.Net.Http.HttpRequestException:无法建立 SSL 连接,请参阅内部异常。 ---> System.Security.Authentication.AuthenticationException:身份验证失败,请参阅内部异常。 ---> System.ComponentModel.Win32Exception: 提供给函数的缓冲区太小 --- 内部异常堆栈跟踪结束 --- 在 System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, ExceptionDispatchInfo 异常) 在 System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 在 System.Net.Security.SslState.StartSendBlob(Byte[] 传入, Int32 count, AsyncProtocolRequest asyncRequest) 在 System.Net.Security.SslState.ProcessReceivedBlob (Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) 在 System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) 在 System.Net.Security.SslState。 在 System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) 在 System.Net.Security.SslState.StartReadFrame(Byte[] buffer) , Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security。 SslState.StartSendBlob(Byte[] 传入, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte[ ] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState .CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[]coming, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.PartialFrameCallback(AsyncProtocolRequest asyncRequest) --- 上一个位置的堆栈跟踪结束异常被抛出 --- 在 System.Net.Security.SslState.ThrowIfExceptional() 在 System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult lazyResult) 在 System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult result) 在 System.Net .Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult) 在 System.Net.Security.SslStream.<>c.b__47_1(IAsyncResult iar) 在 System.Threading.Tasks.TaskFac tory 1.FromAsyncCoreLogic(IAsyncResult iar, Func 2 endFunction, Action 1 endAction, Task 1 promise, Boolean requiresSynchronization) --- 从之前抛出异常的位置开始的堆栈跟踪结束---在 System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore (Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancelationToken) --- 内部异常堆栈跟踪结束 --- 在 System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancelationToken) 在 System.Threading.Tasks.ValueTask 1.get_Result() at System.Net.Http.HttpConnectionPool.CreateConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Threading.Tasks.ValueTask cancelationToken 1.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(ValueTask 1 creationTask) at System.Threading.Tasks.ValueTask 1.get_Result() 在 System.Net.Http.HttpConnectionPool.SendWithRetryAsyn c(HttpRequestMessage 请求,布尔 doRequestAuth,CancellationToken 取消令牌)在 System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage 请求,CancellationToken 取消令牌)在 System.Net.Http.HttpClient.FinishSendAsyncUnbuffered(Task`1 sendTask,HttpRequestMessage 请求,CancellationTokenSource cts, Boolean disposeCts) 在 System.Net.HttpWebRequest.SendRequest() 在 System.Net.HttpWebRequest.GetResponse()

我已经在互联网上搜索了高低,并没有找到解决方法。 我最近还将 .netcore sdk 版本更新为 2.1.105 和 Microsoft.NetCore.APP/Microsoft.ASPNetCore.All,因为我在某处读到错误应该不那么频繁地发生。 完全相反的情况发生了。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM