HttpClientFactory内存泄漏 [英] HttpClientFactory Memory Leak
问题描述
在我的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提供的建议。
最好的问候,
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屋!