【发布时间】:2020-04-28 18:22:31
【问题描述】:
我创建了一个 DLL [作为 NuGet 包 (.NetStandard 2.0/2.1) 提供]。
当此 DLL 中的特定类被实例化时,我们会触发一个同步 GET 调用,以加载一些配置数据。
此 DLL 使用单例 HttpClient(我们在此处遵循 Microsoft 的“最佳实践”)
Factory.SingletonHttpClient().GetAsync(args.Uri).GetAwaiter().GetResult();
我已经在一系列应用程序中使用了这个 NuGet 包,所有应用程序都是使用 .Net Framework 4.7.2 构建的,它们工作得很好 - 数据已成功从 WebAPI 中检索到。
但是....我有一个特定的应用程序(同样是 4.7.2),其中 GET 始终失败并显示错误消息:
System.Net.Sockets.SocketException HResult=0x80004005 消息=An 现有连接被远程主机强行关闭
此异常最初是在此调用堆栈中引发的: System.Net.Sockets.Socket.BeginReceive(byte[], int, int, System.Net.Sockets.SocketFlags, System.AsyncCallback, object)
所以这必须是特定于我的使用此 NuGet 包的应用程序的东西,因为它适用于所有其他消费应用程序。但是,我看不出如何找出问题所在。
【问题讨论】:
标签: sockets asp.net-web-api httpclient dotnet-httpclient socketexception