- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了一个自定义库,它自动为依赖于 HttpClient
的特定服务设置 Polly 策略。 .
这是使用 IServiceCollection
完成的。扩展方法和类型化客户端方法。一个简化的例子:
public static IHttpClientBuilder SetUpFooServiceHttpClient(this IServiceCollection services)
{
return services
.AddHttpClient<FooService>()
.AddPolicyHandler(GetRetryPolicy());
}
示例服务:
public class FooService
{
private readonly HttpClient _client;
// OPTION 1
public FooService(HttpClient httpClient)
{
_client = httpClient;
}
// OPTION 2
public FooService(IHttpClientFactory httpClientFactory)
{
_client = httpClientFactory.CreateClient(GetType().Name);
}
public void DoJob()
{
var test = _client.GetAsync("http://example.com");
}
}
从 DI 容器中获取服务(来自测试项目):
var services = new ServiceCollection();
services.SetUpFooServiceHttpClient();
services.AddSingleton<FooService>();
var fooService = services
.BuildServiceProvider()
.GetRequiredService<FooService>();
// Perform test
fooService.DoJob();
注意:在这个测试项目中,我还添加了一个额外的模拟处理程序,因为我试图模拟 http 状态响应,但是模拟处理程序是否存在与 Polly 策略是否存在相同,所以我省略了模拟处理程序从示例代码。
FooService
中的两个不同的构造函数.根据我注释掉哪一个以及留下哪一个,我会得到不同的结果。所有其他代码保持不变。
HttpClient
直接,忽略我所有的配置。我得到了一个没有 Polly 策略处理程序的标准 http 客户端。 IHttpClientFactory
并使用当前类型名称(即 FooService
)请求客户端尊重我的配置。我得到了一个自定义 http 客户端,其中包含 Polly 策略处理程序(以及我可能配置的任何其他处理程序,例如我的测试套件中的模拟处理程序)HttpClient
方面是等效的。我最终得到的。但这里不是这样。
HttpClient
使用时可以注入(inject)
输入 客户:
HttpClient
显然对我不起作用。
HttpClient
与注入(inject)
IHttpClientFactory
在我的情况下工作方式不同?
最佳答案
实际上,您的 FooService
有以下两个注册。类(class):
services.AddHttpClient<FooService>()
services.AddSingleton<FooService>();
HttpClient
参数将被调用。
关于c# - 注入(inject)的 HttpClient 会忽略 IHttpClientFactory 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63056470/
使用 C#、.NET Core 3.1 我在 startup.cs 中添加了一个单例 httpclient: services.AddHttpClient().ConfigurePrimaryHttp
有没有办法向 IHttpClientFactory 创建的所有客户端添加处理程序? 我知道您可以在命名客户端上执行以下操作: services.AddHttpClient("named", c =>
我想在我的 .NET Core 项目中使用 IHttpClientFactory。问题是我需要使用大量的 API。那么我应该为所有 API 使用单一的 Typed Client 还是应该将它们分开?所
我正在尝试在 Azure Function v3 上注入(inject) IHttpClientFactory 服务,但我不断收到以下错误消息,提示解析服务失败。我使用 azure-functions
下面2种设置HttpClient的场景有什么区别吗? 我应该更喜欢一个吗? 输入客户端: public class CatalogService { private readonly Http
IHttpClientFactory 和更改 HttpClient.BaseAddress 的最佳实践是什么? 在创建我的依赖注入(inject)时,我这样做是这样的: services.AddHtt
我试图在我的项目中构建一个通用的 HTTP 服务(c# with .net core 2.1),我已经按照下面的代码片段 HttpService 完成了它。 我还开始使用它,方法是从我的业务逻辑类调用
我使用 IHttpClientFactory 从两个使用 Net Core 2.2 的外部 API 发送请求和接收 HTTP 响应。 我正在寻找一个好的策略来使用存储在 appsettings.jso
我正在使用带有 IHttpClientFactory 的类型化客户端。像这样: // Startup.cs services.AddHttpClient() // MyHttpClient.cs pu
我在 Blazor 服务器项目的 Razor 组件页面 Index.razor 上收到消息“CS1929 - 'IHttpClientFactory' 不包含'GetFromJsonAsync'的定义
正如标题所示,我有一些代码调用 IHttpClientFactory.CreateClient()创建一个 HttpClient 实例。 我在 .Net Core 3.1 中这样做 我需要 mock
如标题所示。 假设我注册了一个强类型的客户端,例如 var services = new ServiceCollection(); //A named client is another option
当我尝试使用 HttpClient 的类型化客户端时收到错误消息,如下所述: https://learn.microsoft.com/en-us/aspnet/core/fundamentals/ht
我在从我的 asp.net core 2.2 项目连接到 https 站点(如 there)时遇到问题.我使用 IHttpClientFactory 在 Startup.cs 中创建类型化的 Http
我正在尝试在 Blazor 服务器中执行 http Post 请求。我尝试发送用户名和密码 这是我进行 Web Api 调用的部分: private IEnumerable test = Array.
我正在编写自定义 ILoggerProvider,它使用通过配置的 IHttpClientFactory 获得的 HttpClient 实例通过 HTTP 转发日志消息: public void Co
新的 ASP.NET Core 2.1 中有一个非常酷的 IHttpClientFactory 功能 https://www.hanselman.com/blog/HttpClientFactoryF
我正在编写自定义 ILoggerProvider,它使用通过配置的 IHttpClientFactory 获得的 HttpClient 实例通过 HTTP 转发日志消息: public void Co
我创建了一个自定义库,它会自动为依赖于 HttpClient 的特定服务设置 Polly 策略。 这是使用 IServiceCollection 扩展方法和类型化客户端方法完成的。一个简化的例子: p
长话短说 在 .NET 6 中: 类型化的生命周期是多少 HttpClient来自 IHttpClientFactory 的实例将接收它的类型在哪里注册为“Scoped”? 当我们像下面的摘录那样注册
我是一名优秀的程序员,十分优秀!