0

在我的 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, for ex  var response = await httpClient.PutAsync(apiTask.URL, content);
//Return resposne

我不在处理 httpClient 的地方。当我看到内存使用情况时,它一直在增加,即使在几个小时后我也没有看到它下降。

我关注了以下文章 https://docs.microsoft.com/en-us/aspnet/core/fundamentals/http-requests?view=aspnetcore-2.1

我用对了吗?我应该使用“使用(httpClient)”吗

4

1 回答 1

0

无需为HttpClient每个请求实例化 new,您可以在所有请求之间共享一个实例,因为HttpClient它被设计为可重用和线程安全的。

看看这个这个这个,也值得一看

于 2018-10-14T16:42:15.460 回答