时间:2021-05-28
前言
在 Asp.Net Core 1.0 时代,由于设计上的问题, HttpClient 给开发者带来了无尽的困扰,用 Asp.Net Core
开发团队的话来说就是:我们注意到,HttpClient 被很多开发人员不正确的使用。得益于 .Net Core
不断的版本快速升级;
问题来源
长期以来,.NET开发者都通过下面的方式发送http请求:
using (var httpClient = new HttpClient()){ var response = await httpClient.GetAsync(uri); //do something with response}这段代码理论上来说遵守了C#的最佳实践,HttpClient是IDisposable类型,所以我们通过using语法糖来使用HttpClient。微软官方的文档也提到:
As a rule, when you use an IDisposable object, you should declare and instantiate it in a using statement
可是,当我们试图运行下面的测试:
public async Task SendRequest() { Console.WriteLine("Starting reqeust"); for(int i = 0; i<10; i++) { using(var client = new HttpClient()) { var result = await client.GetAsync("http://"); c.DefaultRequestHeaders.Add("Accept", "application/json");});一旦注册了一个名叫“baidu"的HttpClient,你就可以通过下面的方式来建创建HttpClient:
var client = _clientFactory.CreateClient("baidu");5.集成Polly
Polly是一个用来故障处理库,它允许开发者在Http请求中添加“重试、熔断器、超时等”策略。
先添加Nuget:
Microsoft.Extensions.Http.Polly添加策略:
var timeout = Policy.TimeoutAsync<HttpResponseMessage>(TimeSpan.FromSeconds(10));services.AddHttpClient("baidu") .AddPolicyHandler(request => timeout) .AddTransientHttpErrorPolicy(p=>p.RetryAsync(3));当然还有一些高阶用法,详见Initiate HTTP requests,总之HttpClientFactory提供了一种高效实用HttpClient的方式,如果你还在自己new HttpClient,请赶快试试新的方案吧。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
这个问题一般分为两种情况: 1、修改打开方式:适用于系统中存在正确的打开方式,但需要修改当前打开方式的情况。解决方法:选择一个某需要修改打开类型的文件,单击右
原因添加一个文件config.ini,理论上说该文件会以ini文件格式打开,但是不知道咋的手贱用Text格式打开了。.ini正确打开方式.Text正确打开方式手
win10系统打开方式怎么还原?若是需要打开某个文件,首先需要给该文件设置一个默认的打开方式,如果我们错将打开方式设置为其他方式打开,就可以将其打开方式还原
win10系统打开方式怎么还原?若是需要打开某个文件,首先需要给该文件设置一个默认的打开方式,如果我们错将打开方式设置为其他方式打开,就可以将其打开方式还原
以win7为例,打开方式选择了总是修改的方法如下: 1、首先右键想要修改打开方式的文件,打开方式,选择默认程序,先去掉“始终使用选择的程序打开这种文件”;