问题标签 [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 投票
1 回答
7115 浏览

asp.net - 如何使用 HttpClientFactory 为命名的 HttpClient 定义 HttpClientHandler

旧代码:

尝试使用新的 ASP.NET Core 2.1 HttpClientFactory 实现相同的功能:

不幸的是,我收到了 HTTP 407(代理身份验证)错误。我做错了什么?

0 投票
1 回答
6725 浏览

microservices - AddTransientHttpErrorPolicy 和 AddPolicyHandler 有什么区别?

我想使用Polly应用弹性策略。我正在使用来自 ASP.NET Core 2.1 的 HttpClientFactory。我在Polly GitHub wiki上找到了一些指南。这种策略配置有两种方式——使用AddTransientHttpErrorPolicy和AddPolicyHandler,但不多解释。它们之间有什么区别?

0 投票
2 回答
16155 浏览

c# - 配置 HttpClientFactory 以使用当前请求上下文中的数据

使用 ASP.NET Core 2.1 中的新HttpClientFactory,使用基本 url、默认标头等配置自定义 HTTP 客户端非常容易。

但是,我还没有找到一种集中配置的方法,可以让我从当前请求上下文中注入标头。例如,考虑一个使用Authorization标头调用的服务,我也希望将其传递给所有底层服务。能够在类的.AddHttpClient()调用中配置它会很棒,但我不知道如何从那里获取请求上下文。servicesStartup

有任何想法吗?

0 投票
0 回答
319 浏览

c# - HttpClientFactory 响应时间越来越长

我刚刚添加了使用 HttpClients 的新推荐方式,即使用与 Polly 集成的 HttpClientFactory

这是我的 DI

这是服务提供商代码

现在,上面的服务提供者代码在一个被多次调用的类中,比如对进入服务的每个请求调用 6 次

我运行的示例测试是向服务发出一个请求,该服务又调用服务提供者类 6 次,向第三方发出 6 个单独的请求以检索响应。

我还将第三方设置为延迟 5 秒,因此我期望发生的是同时触发所有 6 个请求,并且所有响应在 5 秒后返回,因为客户端工厂应该创建 http 客户端暂时的

然而,我发现请求似乎在它们的响应时间上配对,即前两个需要 5 秒,后两个需要 10 秒,最后两个需要 15 秒,即使它们实际上都被解雇了完全相同的时间

如果我将代码更改为

使用 (var client = _clientFactory.CreateClient("randomString"))... (所以它没有引用 DI 中的“第三方”自定义配置,(即使它本身还没有做任何事情))

它工作正常,所有响应在 5 秒后返回。

另外,如果我将代码更改为以前的代码

使用 (var client = new HttpClient())...

这也按预期工作,所有响应在 5 秒后返回

因此,它似乎与为 DI 进行自定义设置有关。

有任何想法吗?

我也尝试过使用 TypedClients 而不是上面的 NamedClients 方法,我得到了相同的结果

更新

仅当托管在服务结构应用程序中时才会出现此问题

0 投票
1 回答
6129 浏览

c# - 如何在 .net Core API 项目中跨多个线程限制对 HttpClient 的所有传出异步调用

我正在设计一个使用我无法控制的外部 api 的 .net 核心 web api。我找到了一些关于堆栈溢出的出色答案,这些答案允许我在使用 semaphoreslim 的同一线程中限制我对这个外部 API 的请求。我想知道如何最好地将这种限制扩展到应用程序范围,而不是仅仅限制特定的任务列表。我一直在学习 HttpMessageHandlers,这似乎是一种拦截所有传出消息并应用节流的可能方法。但我担心线程安全和我可能不理解的锁定问题。我包括我当前的节流代码,并希望这可能有助于理解我正在尝试做的事情,但跨越多个线程,并且不断添加任务而不是预定义的任务列表。

0 投票
1 回答
3629 浏览

autofac - Autofac 无法解析可枚举的类型化 HttpClients

我有许多服务需要使用来自 HttpClientFactory 的类型化 HttpClient。虽然我可以解决一项服务,但我无法解决此服务的 IEnumerable。

构造函数将被调用一次,然后抛出异常:

``` DependencyResolutionException:无法使用可用的服务和参数调用类型“ConsoleApp2.MyHttpClient”上的“Autofac.Core.Activators.Reflection.DefaultConstructorFinder”的构造函数:无法解析参数“System.Net.Http.HttpClient”构造函数'Void .ctor(System.Net.Http.HttpClient)'的客户端'。

```

问题是 AddHttpClient 添加了它自己的 IMyHttpClient 注册。但我只想使用 Autofac 注册!有没有办法使用类型化的客户端但仍然使用 Autofac?

0 投票
3 回答
3848 浏览

c# - ASP.NET Core 2 从 HttpResponseMessage 获取 cookie

目前我正在开发一个使用 ASP.NET Core 2 编写的项目,并且正在尝试从第三方网站获取 JSON 文件。问题是该网站需要一些 cookie 才能从中检索数据。我在我的 Startup.cs 文件中实现了一个类型化的 HttpClient,如下所示:

有什么方法可以访问 CookieContainer 以使用 CookieContainer.GetCookies() 方法,以便我可以从 HttpResponseMessage 复制各种 cookie,如 Session Cookie 和一些验证令牌?

对不起,如果我做错了什么,这是我的第一篇文章。

编辑

通过在请求管道中添加 HttpMessageHandler 使其工作

并编辑HttpMessageHandler中的http头信息

此方法从 Set-Cookie 标头中获取所有 cookie,并将其添加到请求的 Cookie 标头中。

0 投票
1 回答
2583 浏览

c# - 使用 IHttpClientFactory 为每个请求设置请求标头

我正在使用带有IHttpClientFactory. 像这样:

我不确定这是如何工作的。请求标头是仅为此请求设置,还是为使用此实例发出的每个后续请求设置httpClient。如何根据每个请求设置标头?

0 投票
2 回答
1055 浏览

flurl - Blazor 0.6.0 “擦拭” Flurl 兼容性?

将 Blazor 从 0.5.1(使用 Flurl)更新到 0.6.0 后,通过 flurl 调用会引发异常:

该项目创建一个 HttpClientFactory,它获取 Blazor 的 HttpClient 以供 Flurl 使用:

使用 HttpClientFactoryForBlazor 使用 Blazor 的 HttpClient (http) 创建 FlurlClient:

例如通过 Flurl 的扩展方法“IFlurlRequest.WithClient(c);”使用 FlurlClient (c)

因此,这种方法似乎不再有效。

有人知道如何使用 Blazor 0.6.0 制作 Flurl 吗?

调用堆栈是:

0 投票
2 回答
15816 浏览

c# - 如何为通过 HttpClientFactory 直接创建的 HttpClient 配置 Web 代理?

  • 直接我的意思是没有 Asp.Net Core IoC/DI 助手。

我没有找到有关它的文档,并且我认为我当前的解决方案不是最佳的,因为处理程序生命周期不是由 HttpClientFactory 管理的:

有更好的解决方案吗?