Azure 函数/API 套接字异常

问题描述

我们在高级计划中托管了 Azure 功能,并且在调用我们的内部部署 API 时,我们间歇性地收到带有以下错误消息的 System.Net.Sockets.SocketException -

发送请求时出错。无法从传输连接读取数据:现有连接被远程主机强行关闭。现有连接被远程主机强行关闭。

函数在 .net core 3.1 中,我们使用 httpclientfactory 来获取 httpclient...我们没有设置超时值所以默认应该是 100 秒。根据网络捕获,我们看到连接在 120 秒后超时。

这也发生在 Azure 应用服务(.net 核心 Web API)中,它们在 .NET 核心 3.1 中使用相同的方式使用 httpclient。

using (var httpClient = this.httpClientFactory.CreateClient())

如果有人有想法可能会导致什么,请告诉我。我们已经验证,当从其他 On Premise API 调用 On Premise API 并且没有看到任何错误时,它们可以正常工作。我不认为这会是 httpclient 端的问题,而是 Azure 服务/内部部署 API 之间的网络问题,但我可能错了,所以想和你们核实一下。

下面是堆栈跟踪-

System.Net.Http.HttpRequestException: 在 System.Net.Http.HttpConnection+d__53.MoveNext (System.Net.Http,Version=4.2.2.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a) 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw(System.Private.CoreLib,Version=4.0.0.0,Culture=neutral,PublicKeyToken=7cec85d7bea7798e) 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Private.CoreLib,Version=4.0.0.0,PublicKeyToken=7cec85d7bea7798e) 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib,PublicKeyToken=7cec85d7bea7798e) 在 System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Private.CoreLib,PublicKeyToken=7cec85d7bea7798e) 在 System.Runtime.CompilerServices.ConfiguredTaskAwaitable1+ConfiguredTaskAwaiter.GetResult (System.Private.CoreLib,PublicKeyToken=7cec85d7bea7798e) at System.Net.Http.HttpConnectionPool+<SendWithNtConnectionAuthAsync>d__48.MoveNext (System.Net.Http,PublicKeyToken=b03f5f7f11d50a3a) at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib,PublicKeyToken=7cec85d7bea7798e) at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Private.CoreLib,PublicKeyToken=7cec85d7bea7798e) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib,PublicKeyToken=7cec85d7bea7798e) at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Private.CoreLib,PublicKeyToken=7cec85d7bea7798e) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable1+ConfiguredTaskAwaiter.GetResult (System.Private.CoreLib,PublicKeyToken=7cec85d7bea7798e) 在 System.Net.Http.HttpConnectionPool+d__47.MoveNext (System.Net.Http,PublicKeyToken=7cec85d7bea7798e) at System.Net.Http.RedirectHandler+<SendAsync>d__4.MoveNext (System.Net.Http,PublicKeyToken=7cec85d7bea7798e) 在 System.Net.Http.DiagnosticsHandler+d__2.MoveNext (System.Net.Http,PublicKeyToken=b03f5f7f11d50a3a) 在 System.Net.Http.HttpConnection+d__53.MoveNext 处理的内部异常 System.IO.IOException: 在 System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs.ThrowException (System.Net.Sockets,PublicKeyToken=b03f5f7f11d50a3a) 在 System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs.GetResult (System.Net.Sockets,PublicKeyToken=b03f5f7f11d50a3a) 在 System.Threading.Tasks.ValueTask1.get_Result (System.Private.CoreLib,PublicKeyToken=7cec85d7bea7798e) at System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable1+ConfiguredValueTaskAwaiter.GetResult (System.Private.CoreLib,PublicKeyToken=7cec85d7bea7798e) 在 System.Net.Security.SslStream+d1.MoveNext (System.Net.Security,Version=4.1.2.0,PublicKeyToken=7cec85d7bea7798e) at System.Threading.Tasks.ValueTask1.get_Result (System.Private.CoreLib,PublicKeyToken=7cec85d7bea7798e) 在 System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable1+ConfiguredValueTaskAwaiter.GetResult (System.Private.CoreLib,PublicKeyToken=7cec85d7bea7798e) at System.Net.Security.SslStream+<ReadAsyncInternal>d__2141.MoveNext (System.Net.Security,PublicKeyToken=7cec85d7bea7798e) 在 System.Threading.Tasks.ValueTask1.get_Result (System.Private.CoreLib,PublicKeyToken=7cec85d7bea7798e) 在 System.Net.Http.HttpConnection+d__87.MoveNext (System.Net.Http,PublicKeyToken=7cec85d7bea7798e) 在 System.Runtime.CompilerServices.ConfiguredTaskAwaitable+ConfiguredTaskAwaiter.GetResult (System.Private.CoreLib,PublicKeyToken=7cec85d7bea7798e) 在 System.Net.Http.HttpConnection+d__84.MoveNext (System.Net.Http,PublicKeyToken=7cec85d7bea7798e) 在 System.Net.Http.HttpConnection+d__53.MoveNext (System.Net.Http,PublicKeyToken=b03f5f7f11d50a3a) 在 System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs.ThrowException 处理的内部异常 System.Net.Sockets.SocketException:

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)