HttpClientFactory内存泄漏 [英] HttpClientFactory Memory Leak

查看:86
本文介绍了HttpClientFactory内存泄漏的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的c#控制台应用程序(.net 4.6.1)中,我需要对随机端点进行API调用(Get / Post / Put / delete)等。 url,payload等的详细信息来自数据库表。控制台应用程序获取httpClientFactory实例,如下所示。

 var serviceProvider = new ServiceCollection()。AddHttpClient()。BuildServiceProvider(); 
var httpClientFactory = serviceProvider.GetService< IHttpClientFactory>();

对于我从表中获得的每条记录,我调用一个方法来进行API调用。对于该方法,我传递了httpClientFactory。在该方法中,我正在创建和使用HttpClient,如下所示。


 var httpClient = httpClientFactory.CreateClient(); 
// set headers
// make api call,ex ex response = await httpClient.PutAsync(apiTask.URL,content);
//返回resposne

我不在处理httpClient。当我看到内存使用量时,它会不断增加,即使在数小时后我也看不到它。


我按照以下文章  https://docs.microsoft.com/en-us/aspnet/芯/基本面/ HTTP的请求视图= aspnetcore-2.1 功能?;


我使用它吗?我应该使用"使用(httpClient)"  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;
  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;
  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;
  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP;   





Ravi




解决方案

嗨RaviAustin,


感谢您在此发帖。


对于您的问题,您可以参考David Peden提供的建议。


https://stackoverflow.com / questions / 15705092 / do-httpclient-and-httpclienthandler-have-to-dispos-


最好的问候,


Wendy


In my c# console app (.net 4.6.1), I am required make API calls (Get/Post/Put/delete) etc to random endpoints. The details of the url, payload etc comes from a database table. The console app gets the httpClientFactory instance as shown below.

var serviceProvider = new ServiceCollection().AddHttpClient().BuildServiceProvider();
var httpClientFactory = serviceProvider.GetService<IHttpClientFactory>();

For each record I get from the table, I call a method to make an API call. To that method I pass the httpClientFactory. In that method, I am creating and using HttpClient as follows.

var httpClient = httpClientFactory.CreateClient();
//set headers
//make api call, for ex  var response = await httpClient.PutAsync(apiTask.URL, content);
//Return resposne

I am no where disposing of httpClient. As I see the memory usage, it keeps on increasing and I don't see it going down even after hours.

I followed the following article https://docs.microsoft.com/en-us/aspnet/core/fundamentals/http-requests?view=aspnetcore-2.1 

Am i using it right?. Should I be using the "using(httpClient)"                                                                                                                                                                                                                                                                  


Ravi


解决方案

Hi RaviAustin,

Thank you for posting here.

For your question, you could refer to the suggestion provided by David Peden.

https://stackoverflow.com/questions/15705092/do-httpclient-and-httpclienthandler-have-to-be-disposed

Best Regards,

Wendy


这篇关于HttpClientFactory内存泄漏的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆