问题标签 [ihttpclientfactory]
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.
api - 使用具有 HttpClient 依赖项的服务对 API 运行集成测试 - CustomWebApplicationFactory
我一直试图让集成测试适用于我的 dotnetcore3.1 API,但没有成功。我了解,出于集成测试的目的,可以使用自定义 Web 应用程序工厂并简单地从中创建一个客户端来调用 api 端点。完成了,我有这个并且效果很好。
我的问题是我必须通过一个 NSwag 客户端来执行此操作,该客户端处理身份验证并负责 http 客户端的所有配置。
因此,我需要获取已在 Web 应用程序工厂 (webhostbuilder) 阶段注入的我的 nswag 客户端服务,但我认为我需要使用它而不是 factory.CreateClient()。
我认为,因为我没有调用 CreateClient,所以这是出现错误的原因 - 在我期望在测试中对请求做出响应的时候,“无法建立连接目标机器主动拒绝它” 。
那么当这个依赖的实现被隐藏在你希望使用的 Nswag 服务中时,如何使用 factory.createclient 呢?
我完全错过了什么吗?
c# - 当请求的命名客户端未定义时,使 ASP.NET 核心 IHttpClientFactory 抛出
我正在使用 ASP.NET 核心 3.1,并且正在编写一个 Web api,从 Visual Studio 2019 内置的 ASP.NET 核心 Web api 模板开始。
我的一项服务依赖于该IHttpClientFactory
服务。我正在使用命名的客户端消费模式。所以,基本上,我有这样的代码:
我注意到即使使用不存在的 HTTP 客户端的名称,前面的方法调用也能正常工作。不存在的 HTTP 客户端是指从未在方法内部定义的命名 HTTP 客户端Startup.ConfigureServices
。
换句话说,我希望下面的代码会抛出,但实际上它不会:
是否可以配置一个 ASP.NET 核心 3.1 应用程序,使其IHttpClientFactory
具有严格的行为,并且像前一个一样的代码会引发异常,说明请求的命名客户端未定义?
c# - 对新 ihttpfactory 中 httpclient 的生命周期感到困惑
从规范为单例的代码重构为httpclient
新的代码,ihttpfactory
我对以下代码的生命周期感到非常困惑httpClient
:
The typed client is registered as transient with DI.
[打字客户]
这意味着我以前依赖的所有单例服务httpclient
现在都将效仿[即暂时的]。我找不到有关此设计选择的支持文档?由于我们必须使所有依赖图瞬态化,现在这不会对性能造成伤害吗?
c# - 如何使用 HttpClient 和 Task.WhenAll 避免 ThrowAddingDuplicateWithKeyArgumentException
所以,我写了一个类来实现 IdentityServer4 的授权。该类期望HttpClient
,IHttpContextAccessor
用于访问当前标题和一些设置。
在调用 sub-api 之前,我让它请求一个具有必要范围的新令牌。如果没有错误,它会调用:
在Startup.cs
使用此委托授予类的 api 中,我有:
这实现了IHttpClientFactory
向DelegationAuthServiceClient
提供HttpClient
.
这一切都很好,直到我尝试Task.WhenAll
在重负载下使用多个委托调用。然后,我开始看到:
上SetBearerToken
线。我认为发生这种情况是因为一个委托调用未完成,而另一个正在尝试设置令牌,并且标头中已经存在“Bearer”。
我读过一些文章,讨论为什么HttpClient
每次通话都 new up an 不好,而拥有一个 singleton 也不好HttpClient
。我认为IHttpClientFactory
创建它是为了在必要时处理更新。但是,它看起来并不这样做。
除了不使用之外,避免此错误的建议或正确方法是Task.WhenAll
什么?
c# - 如何为每个 url 使用 Polly 和 IHttpClientFactory
我正在尝试找到一种方法来使用using HttpClient
where IHttpClientFactory.CreateClient([name])
[name] 是在 Startup 类中使用. 我希望该策略适用于我使用该客户端进行调用的每个 url。HttpClient
Polly
PolicyRegistry
因此,如果我创建一个名为“myclient”的客户端,并且在整个应用程序中,我将使用该命名客户端调用 N 个不同的 url,我希望将策略单独应用于每个 url,而不是作为一个整体。
启动
一些消费者服务
在上述情况下,我希望为我正在调用的每个 url 单独采用启动类中设置的策略。
那可能吗 ?
c# - 如何在运行时使用 Polly 策略注册 HttpClient?
我希望在运行时能够HttpClient
通过IHttpClientFactory
给定的Polly
策略在运行时注册。是否有可能以某种方式改变IServiceCollection
?
我知道IServiceCollection
是一个仅用于初始化的容器,之后服务应该用 解决IServiceProvider
,但我需要HttpClient
在运行时根据给定的参数添加新的(s):
注册服务
消费者
c# - 使用关联的 DelegatingHandler 处理 HttpClient
您好,我正在使用IHttpClientFactory
withDI
来创建 附加HttpClient
了自定义的实例。DelegatingHandler
这些处理程序包含应处置的资源。就我而言,它们包含一个Polly
policy 。
使用其委托处理程序处置此类 HttpClient 实例的正确方法是什么?
Http 委托处理程序
HttpClient 创建
c# - 使用 API_Key 授权的 API 调用(httpclient / IHttpClientFactory)
我想用 API_Key 授权调用第三方 API。请找到我的代码,它返回“StatusCode:401,ReasonPhrase:'未授权',版本:1.1”
我尝试通过 2 方法添加 API 密钥,并且都给出了上述响应。请指教。