我有一个Web API(服务),其目标框架是.net core 2.0。
此服务通过使用“ using”语句使用HttpClient调用自定义身份服务器4终结点。此调用在Development / UAT服务器上始终可以正常运行。 但是在所有生产服务器上,它会间歇性失败并抛出以下异常:
发生一个或多个错误。 (发送邮件时发生错误 请求。)异常:System.AggregateException:一个或多个错误 发生。 (发送请求时发生错误。)---> System.Net.Http.HttpRequestException:发送时发生错误 请求。 ---> System.Net.Http.WinHttpException:操作 超时于 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()在 System.Threading.Tasks.RendezvousAwaitable`1.GetResult()位于 System.Net.Http.WinHttpHandler.d__105.MoveNext()- 内部异常堆栈跟踪的结尾--- System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务) System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() 在 System.Net.Http.HttpClient.d__58.MoveNext()
---内部异常堆栈跟踪的结尾---在System.Threading.Tasks.Task`1.GetResultCore(Boolean 在Get(String a,String b)处的waitCompletionNotification)
我经历了相关的堆栈溢出文章,有人建议使HttpClient静态,因为它可能会引发套接字耗尽错误。但是我也没有收到该错误,也无法在开发服务器上重现此问题。我创建了一个控制台应用程序,并将此服务调用了64k次,但仍然可以正常工作。
How to stop outbound HTTP connections from timing out
Asp.net Core HttpClient has many TIME_WAIT or CLOSE_WAIT connections
有人可以告诉我,仅在生产服务器上出现此间歇性错误的原因是什么,或者有什么方法可以在开发服务器上重现此问题?我已经尝试通过拨打许多服务电话,但仍然无法重现该错误。