问题标签 [httpclientfactory]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
32479 浏览

c# - 如何使用 Moq 在 .NET Core 2.1 中模拟新的 HttpClientFactory

.NET Core 2.1 附带了这个名为 的新工厂HttpClientFactory,但我不知道如何模拟它来对包括 REST 服务调用的一些方法进行单元测试。

工厂正在使用 .NET Core IoC 容器注入,该方法的作用是从工厂创建一个新客户端:

然后使用客户端从 REST 服务获取数据:

0 投票
0 回答
283 浏览

c# - 将摘要身份验证添加到由 IHttpFactory 构建的客户端

我正在构建一个 API,该 API 公开一个 POST 端点,该端点在请求中接受包含映射到 uris 的键的环境详细信息。然后这个 API 会根据传递的请求数据,向其他 API 发送 POST 请求。

到目前为止,客户端的基本 uri 是静态的,现在 uri 是动态的并且是从传入请求传递的。

通过构造函数注入时,HttpClient 构建在 Service 类中。

如何在已由构造函数构建的客户端上添加 CredentialsCache 并将逻辑从启动到按需请求?

目前使用扩展方法在 Startup 上注册

在服务等级

如何在启动时添加与扩展方法中相同的配置?

0 投票
3 回答
12012 浏览

c# - Authentication per request using HttpClientFactory .net Core 2.1

How should I use HttpClientFactory to return an instance of HttpClient whose uri and credentials are determined at the point of the call?

The existing code looks like this:

0 投票
1 回答
633 浏览

c# - 在 GetAsync 完成之前很久就结束请求的奇怪 HttpClient 日志记录

我向 REST API 发出一些 HTTP 请求,返回大量数据(大约 100 MB)。我现在使用HttpClientFactory.Net Core 来获取数据,它工作正常。但令我困惑的是,我的时间安排与图书馆本身的内部时间安排之间存在差异。

这是来自库的示例消息:

在 130311.0094ms 后结束处理 HTTP 请求 - OK

问题是:真正下载所有数据确实需要 20-30 多秒,即使库已经写完所有数据(执行client.GetAsync()方法)。

我假设这里发生的情况是库非常渴望在收到标头后立即报告,而无需等待正文被下载。

这听起来确实像一个错误,但我不确定是否是。也许有人对为什么会发生这种情况有更好的解释?

PS这是我的代码示例:

我的日志中经过的时间远高于系统消息中的时间

PPS 我尝试过运行,HttpCompletionOption.ResponseContentRead但它确实没有改变结果,它仍然有很大的不同。

0 投票
0 回答
913 浏览

.net-core - 从 HttpClientFactory 创建的缓存 HttpClient 是否存在 DNS 更新问题?

线程询问是否应缓存由 HttpClientFactory 创建的 HttpClient。我认为答案是否定的,因为每个 HttpClientFactory 都会存在 HttpClientHandler 池。

但我的问题是,如果它被缓存和重用会发生什么。它仍然有DNS更新问题吗?

根据Steve Gordon 的 An Introduction to HttpClientFactory

任何依赖于原始处理程序链的客户端都可以继续使用它而不会出现任何问题。

我认为这意味着缓存的 HttpClient 即使在 2 分钟后仍将继续使用相同的 HttpClientHandler 并且不会进行 DNS 更新。如果是这种情况,则不应缓存 HttpClient 并应始终使用 HttpClientFactory.CreateClient。

ASP.NET Core 文档只是说它不需要保留单个实例,但如果保留单个实例,它并没有说明后果。

使单个 HttpClient 实例长时间保持活动状态是 IHttpClientFactory 开始之前使用的常见模式。迁移到 IHttpClientFactory 后,这种模式就变得不必要了。

0 投票
0 回答
2041 浏览

httpclientfactory - 在 .Net Core 2.1 类库中使用 HttpClientFactory

我有 ASP.NET Core 2.1 项目,它使用基于 .Net Core 2.1 构建的类库。在 .Net Core 2.1 类库中,我需要创建几个 REST 类,为此我使用 HttpClient 类。

我想利用 HttpClientFactory 的优势来创建和使用 HttpClient 实例。

如何在 .Net Core 2.1 类库中使用 HttpClientFactory。

0 投票
1 回答
467 浏览

.net - ClientFactory http客户端请求卡住

我正在开发.net 核心应用程序。我尝试使用 IHttpClientFactory 来获取 HttpClient。我发现有时对于某些请求方法 GetAsync 卡住了。同时,如果我使用 new HttpClient() 它工作正常

网址:

https://i.mycdn.me/image?id=879381309947&t=33&plc=API&aid=1246413312&tkn= *6UWxsdoE8PBzmpmnySW2C9DI064

这卡住了

这工作正常:

如何解决?

0 投票
1 回答
1416 浏览

c# - HttpClientFactory - .NET 标准 - 调用 Web API

我们目前正在使用HttpClient从 MVC 应用程序调用 Web API。

HttpClient是静态助手类的一部分,如下所示

它是从 MVC 控制器调用的,如下所示

因此,每当调用 ApiClient 时,都会打开一个新的底层连接,这不是正确的方法。

我阅读HttpClientFactory并阅读了这篇文章,结果将创建逻辑修改为

即使多次调用,这是否会阻止打开多个连接?

0 投票
1 回答
1337 浏览

c# - DelegateHandler 的 DI 无法正常工作

刚开始使用 HttpFactory,非常困惑它的 DI 是如何工作的,例如这条线的工作原理

这不

返回

“消息:System.InvalidOperationException:没有注册类型‘UserAgentDelegatingHandler’的服务。”

同样的情况,下面的代码工作正常

但这不是

我从这些示例中阅读了很多 HttpClientFactory 使用示例,我的 DelegateHandlers。

我做错了什么?

0 投票
2 回答
1311 浏览

c# - 如何将 HttpClientFactory 与 AutoRest 生成的客户端一起使用

AutoRest 生成的客户端没有合适的构造函数来使用 services.AddHttpClient() 方法。那么我们怎样才能解决这个问题呢?

现在我们有了具有这样签名的公共构造函数。

但是因为它有 bool disposeHttpClient 参数,所以我们不能直接在 AddHttpClient() 方法中使用它来将客户端服务配置到 DI 中。令我深感遗憾的是,HttpClientFactory 不包含具有这样签名的方法 AddHttpClient 的覆盖版本: