问题标签 [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.
asp.net - 如何使用 HttpClientFactory 为命名的 HttpClient 定义 HttpClientHandler
旧代码:
尝试使用新的 ASP.NET Core 2.1 HttpClientFactory 实现相同的功能:
不幸的是,我收到了 HTTP 407(代理身份验证)错误。我做错了什么?
microservices - AddTransientHttpErrorPolicy 和 AddPolicyHandler 有什么区别?
我想使用Polly应用弹性策略。我正在使用来自 ASP.NET Core 2.1 的 HttpClientFactory。我在Polly GitHub wiki上找到了一些指南。这种策略配置有两种方式——使用AddTransientHttpErrorPolicy和AddPolicyHandler,但不多解释。它们之间有什么区别?
c# - 配置 HttpClientFactory 以使用当前请求上下文中的数据
使用 ASP.NET Core 2.1 中的新HttpClientFactory,使用基本 url、默认标头等配置自定义 HTTP 客户端非常容易。
但是,我还没有找到一种集中配置的方法,可以让我从当前请求上下文中注入标头。例如,考虑一个使用Authorization
标头调用的服务,我也希望将其传递给所有底层服务。能够在类的.AddHttpClient()
调用中配置它会很棒,但我不知道如何从那里获取请求上下文。services
Startup
有任何想法吗?
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 方法,我得到了相同的结果
更新
仅当托管在服务结构应用程序中时才会出现此问题
c# - 如何在 .net Core API 项目中跨多个线程限制对 HttpClient 的所有传出异步调用
我正在设计一个使用我无法控制的外部 api 的 .net 核心 web api。我找到了一些关于堆栈溢出的出色答案,这些答案允许我在使用 semaphoreslim 的同一线程中限制我对这个外部 API 的请求。我想知道如何最好地将这种限制扩展到应用程序范围,而不是仅仅限制特定的任务列表。我一直在学习 HttpMessageHandlers,这似乎是一种拦截所有传出消息并应用节流的可能方法。但我担心线程安全和我可能不理解的锁定问题。我包括我当前的节流代码,并希望这可能有助于理解我正在尝试做的事情,但跨越多个线程,并且不断添加任务而不是预定义的任务列表。
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?
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 标头中。
c# - 使用 IHttpClientFactory 为每个请求设置请求标头
我正在使用带有IHttpClientFactory
. 像这样:
我不确定这是如何工作的。请求标头是仅为此请求设置,还是为使用此实例发出的每个后续请求设置httpClient
。如何根据每个请求设置标头?
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 吗?
调用堆栈是:
c# - 如何为通过 HttpClientFactory 直接创建的 HttpClient 配置 Web 代理?
- 直接我的意思是没有 Asp.Net Core IoC/DI 助手。
我没有找到有关它的文档,并且我认为我当前的解决方案不是最佳的,因为处理程序生命周期不是由 HttpClientFactory 管理的:
有更好的解决方案吗?