.net core Azure功能:远程主机强制关闭了现有连接。已经在使用静态HttpClient

.net core Azure功能:远程主机强制关闭了现有连接。已经在使用静态HttpClient,.net-core,azure-functions,.net Core,Azure Functions,我的函数调用一直失败,错误消息为,远程主机强制关闭了现有连接。为了缓解这个问题,我将使用静态Http客户机,我已经在这样做了,但错误仍然不断发生 然而,我确实有4个这样的静态客户机,我想这比严格意义上的1个还要多。但我仍然认为使用4个静态实例比使用多个(非静态)实例更好 我想真的只有一个客户,但我不知道如何使它的工作。有一个函数应用程序定义为下面的助手类。此外,还有3个服务被提取到单独的类库中(因为它们也用于不同的项目),我将它们包含在我的函数应用程序中,并通过DI使用。函数应用程序和所有3个l

我的函数调用一直失败,错误消息为
,远程主机强制关闭了现有连接。为了缓解这个问题,我将使用静态Http客户机,我已经在这样做了,但错误仍然不断发生

然而,我确实有4个这样的静态客户机,我想这比严格意义上的1个还要多。但我仍然认为使用4个静态实例比使用多个(非静态)实例更好

我想真的只有一个客户,但我不知道如何使它的工作。有一个函数应用程序定义为下面的助手类。此外,还有3个服务被提取到单独的类库中(因为它们也用于不同的项目),我将它们包含在我的函数应用程序中,并通过DI使用。函数应用程序和所有3个lib都包含下面的helper类

公共静态类Http
{
私有静态HttpClient _client=new HttpClient();
公共静态异步任务GetAsync(字符串url,字典?头=null)
{
var req=新的HttpRequestMessage(HttpMethod.Get,url);
if(headers!=null)req.\u addRequestHeaders(headers);
var response=wait_client.SendAsync(req);
response.EnsureSuccessStatusCode();
返回响应;
}
}
libs中的服务使用HTTP完成自己的工作。我怎样才能让应用程序及其引用的所有库使用同一个静态http客户端

或者您认为多个静态http类不是问题的原因吗?在vs代码(即Azure之外)中本地运行函数应用程序时,不会出现此类错误

干杯

或者您认为多个静态http类不是问题的原因吗

这个。您看到的错误代码是:

对等方重置连接。 远程主机已强制关闭现有连接。如果远程主机上的对等应用程序突然停止,主机重新启动,主机或远程网络接口被禁用,或者远程主机使用硬关闭,则通常会出现这种情况(有关远程套接字上的SO_LINGER选项的更多信息,请参阅setsockopt)。如果在一个或多个操作正在进行时,由于“保持活动”活动检测到故障而导致连接中断,也可能会导致此错误。正在进行的操作因WSAENETRESET而失败。后续操作因WSAECONNRESET而失败

您看到的异常表明这是意外的重置(在其他情况下,
WSAECONNRESET
正常,而
HttpClient
会为您处理这些异常)

意外重置的原因可能很多。如果总是发生这种情况,则可能是安全性(TLS)设置不匹配或请求格式错误。如果有时发生这种情况,可能是另一个服务在错误的时间重新启动/崩溃。这在云中发生,您的服务应该重试

在vs代码(即Azure之外)中本地运行函数应用程序时,不会出现此类错误


接下来我要做的是。

你遇到的意外重置的事实有各种各样的原因,有一件事是重试处理,你有没有考虑过POLLY HTTPclipse工厂?