- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 .Net Core 项目需要连接到大约 4 个不同的 API 服务,我不是任何 HttpClient 代码的专家,但据我发现,您通常只想重用一个实例你的 HttpClient 的。据我所知,普遍的共识是在.Net Core 中使用 HttpClientFactory,方法是在 Startup 类中注册它,然后使用 DI 请求它。
现在,除了 BaseAddress url 之外,我的大多数默认 header 等通常都相同,当连接到 4 个 diff API 服务时,我应该如何处理?我应该注册 4 个不同的命名客户端还是让一个客户端预先设置所有默认信息,然后根据需要手动配置它,例如配置地址?
一般问题是因为我对此很陌生,据说可以重复使用 HttpClient 的一个实例。
最佳答案
使用目的IHttpClientFactory
不是重用 HttpClient
的实例.相反,它是重用(通过池化)HttpMessageHandler
的实例。 (实际上是 HttpClientHandler
,它源自抽象的 HttpMessageHandler
),它是管理 HTTP 连接和套接字的底层对象。 This diagram来自 Microsoft Docs 很好地展示了这一点。
您担心频繁调用IHttpClientFactory.CreateClient()
将产生与频繁调用 new HttpClient()
相同的问题.然而,这种情况并非如此。正如 Microsoft docs 所解释的那样,频繁调用new HttpClient()
的原因将导致套接字耗尽的是,此构造函数将创建 HttpMessageHandler
的新实例:
However, the issue isn't really with HttpClient per se, but with the default constructor for HttpClient, because it creates a new concrete instance of HttpMessageHandler, which is the one that has sockets exhaustion and DNS changes issues mentioned above.
IHttpClientFactory
它不使用
HttpClient
的无参数构造函数在
CreateClient()
.相反,它得到
HttpMessageHandler
从池中注入(inject)到创建的
HttpClient
.
关于c# - .Net Core HttpClientFactory 用于多种 API 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63820819/
我有一个类型化的客户端,我想将其注册为单例: public class SomeHttpClient { private readonly IHttpClientFactory _client
我需要使用 HttpClientFactory 来连接到外部 api。Startup.cs 中的代码如下所示 public void SetUpHttpClients(IServiceCollecti
HttpClientFactory 提供以下扩展方法: public static IHttpClientBuilder AddHttpClient(this IServiceCollection s
随着新的HttpClientFactory在 ASP.NET Core 2.1 中,使用基本 url、默认 header 等配置自定义 HTTP 客户端非常容易。 但是,我还没有找到一种集中配置的方法
我有 Asp.Net Core WebApi。我正在根据 HttpClientFactory pattern 发出 Http 请求.这是我的示例代码: public void ConfigureSer
我需要在 HttpClientFactory 中添加证书。使用 HttpClient 的旧实现如下所示: var cookieContainer = new CookieContainer(); va
在我的 asp.net 核心 MVC 应用程序中,我使用的是 HttpClientFactory创建 HttpClient对 API 服务器的请求的对象。 遵循 Microsoft 文档,HttpCl
我目前正在配置我的 httpclientfactory这边走 HttpClientHandler httpClientHandler = new HttpClientHandler() { S
在任何地方我都可以看到在 DI 中创建客户端(基本、命名、类型)的三种主要方法,但我找不到注入(inject) IHttpClientFactory 的方法。或 HttpClient (两者都可能)。
我有一个带有简单消费后台服务的控制台程序,它需要从使用 HttpClientFactory 的作用域服务调用函数来调用外部 API 并将结果返回给消费后台服务。 在查看了几个在线示例后,我想要非常简单
我正在用 C# 编写一个应用程序。它从 Cloudant NoSQL DB 中提取数据。 但是当我尝试创建 Http 客户端时: HttpClient client = HttpClientFacto
我有一个带有简单消费后台服务的控制台程序,它需要从使用 HttpClientFactory 的作用域服务调用函数来调用外部 API 并将结果返回给消费后台服务。 在查看了几个在线示例后,我想要非常简单
我很好奇 HttpClientFactory class 的目的是什么? 。 MSDN 上没有说明它为何存在(请参阅链接)。 有Create methods有更专门的参数,但我主要想知道不带参数的调用
我想过用HttpClientFactory,但是调用的时候需要附上证书目前使用的是HttpClient,但是不知道怎么附上证书。 httpClient代码如下: HttpClientHandler h
有人知道在使用 HttpClientFactory 时如何使用客户端证书吗?在我发现的所有示例中,您需要在 HttpClient 构造函数中提供一个 HttpMessageHandler,这在使用 H
我正在尝试将 HttpClientFactory 配置为使用授权 header 。问题是必须从 auth 服务检索 auth token ,这是另一个 HTTP 调用,最好使用 await 来完成。然
AutoRest 生成的客户端没有合适的构造函数来与 services.AddHttpClient() 方法一起使用。那么我们如何解决这个问题呢? 现在我们有了带有这种签名的公共(public)构造函
AutoRest 生成的客户端没有合适的构造函数来与 services.AddHttpClient() 方法一起使用。那么我们如何解决这个问题呢? 现在我们有了带有这种签名的公共(public)构造函
我们可以在这里阅读YOU'RE USING HTTPCLIENT WRONG AND IT IS DESTABILIZING YOUR SOFTWARE我们不应该为每个 http 请求创建和处理 Ht
我有一个 .Net Core 项目需要连接到大约 4 个不同的 API 服务,我不是任何 HttpClient 代码的专家,但据我发现,您通常只想重用一个实例你的 HttpClient 的。据我所知,
我是一名优秀的程序员,十分优秀!