Microsoft 在.Net Framework 4.5中引入了HttpClient,并且是在.NET服务器端代码中使用Web API的最常用方法。但它有一些严重的问题,如释放HttpClient对象不立即关闭套接字,太多实例影响性能和单个的HttpClient或共享HttpClient实例不尊重DNS生存时间(TTL)设置。当并没有大批量或者并发调用时,选择 HttpClient 还行:

 private static readonly HttpClient HttpClient = new HttpClient();//定义

 var res = await HttpClient.GetStringAsync(url);//调用

 .net core 2.1 引入了HttpClientFactory的一些问题,当高并发时可以使用HttpClientFactory,例子链接里有,我只介绍一个在类库中使用方法:

1.类库中建封装类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Threading.Tasks; namespace Oss.Utils
{
public class HttpClientFactory
{
public HttpClient Client { get; private set; } public HttpClientFactory(HttpClient httpClient)
{

httpClient.BaseAddress = new Uri("https://api.github.com/");
                          httpClient.DefaultRequestHeaders.Add("Accept", "application/vnd.github.v3+json");
                          httpClient.DefaultRequestHeaders.Add("User-Agent", "HttpClientFactory-Sample");
                          httpClient.Timeout = TimeSpan.FromSeconds(60);
                         Client = httpClient;

        }
}
}

2.其他类中调用就好了:

  private static readonly HttpClient HttpClient = new HttpClient();
private static readonly HttpClientFactory HttpClientFactory = new HttpClientFactory(HttpClient);
...
...
... var res = await HttpClientFactory.Client.GetStringAsync(url);

okay,调用完成。

说明一下:在.net core 项目中使用HttpClientFactory的时候,要是在Startup.cs注册时,要安装:

Microsoft.Extensions.Http   nuget包,

直接搜索即可。

具体使用方法和参考链接如下:https://www.cjavapy.com/article/150/

.net core 中使用httpclient,HttpClientFactory的问题的更多相关文章

  1. ASP.NET Core教程:在ASP.NET Core中使用HttPClient调用WebService

    一.前言 在以前的一篇文章中,曾经讲述过如何在ASP.NET Core中调用WebService.但是那种方式是通过静态引用的方式去调用的,如果是在生产环境中,肯定不能使用这种方式去调用,幸运的是微软 ...

  2. asp.net core中使用HttpClient实现Post和Get的同步异步方法

     准备工作 1.visual studio 2015 update3开发环境 2.net core 1.0.1 及以上版本  目录 1.HttpGet方法 2.HttpPost方法 3.使用示例 4. ...

  3. 在.Net Core中使用HttpClient添加证书

    最近公司要对接电信物联网北向API接口,当调用Auth授权接口时,需要用到证书,此篇文章记录下遇到的坑~ 有两种调用接口的方式,下面是两种方式的简单示例 1.使用HttpClient public s ...

  4. Asp.Net Core中HttpClient的使用方式

    在.Net Core应用开发中,调用第三方接口也是常有的事情,HttpClient使用人数.使用频率算是最高的一种了,在.Net Core中,HttpClient的使用方式随着版本的升级也发生了一些变 ...

  5. HttpClient在.NET Core中的正确打开方式

    问题来源 长期以来,.NET开发者都通过下面的方式发送http请求: using (var httpClient = new HttpClient()) { var response = await ...

  6. 工厂参观记:.NET Core 中 HttpClientFactory 如何解决 HttpClient 臭名昭著的问题

    在 .NET Framework 与 .NET Core 中 HttpClient 有个臭名昭著的问题,HttpClient 实现了 IDispose 接口,但当你 Dispose 它时,它不会立即关 ...

  7. ASP.NET Core中如何针对一个使用HttpClient对象的类编写单元测试

    原文地址: How to unit test a class that consumes an HttpClient with IHttpClientFactory in ASP.NET Core? ...

  8. 在 .NET Core 中结合 HttpClientFactory 使用 Polly(下篇)

    译者:王亮作者:Polly 团队原文:http://t.cn/EhZ90oq声明:我翻译技术文章不是逐句翻译的,而是根据我自己的理解来表述的(包括标题).其中可能会去除一些不影响理解但本人实在不知道如 ...

  9. 在 .NET Core 中结合 HttpClientFactory 使用 Polly(中篇)

    译者:王亮作者:Polly 团队原文:http://t.cn/EhZ90oq声明:我翻译技术文章不是逐句翻译的,而是根据我自己的理解来表述的(包括标题).其中可能会去除一些不影响理解但本人实在不知道如 ...

随机推荐

  1. vue.js的安装

    使用nodejs安装Vue-cli 1.安装完成node,node有自带的npm,可以直接在cmd中,找到nodeJs安装的路径下,进行命令行全局安装vue-cli.(npm install --gl ...

  2. 第四周读书笔记——读《我是一只IT小小鸟》有感

             读<我是一只IT小小鸟>有感 这是邓老师倾力推荐的一本书.这本书的标题化用了我们耳熟能详的歌词,算是较有新意吧.更重点在于,这本书的作者不是哪一位大牛,而是一群刚刚走出校 ...

  3. 洗礼灵魂,修炼python(11)--python函数,模块

    前面的章节你如果看懂了,基本算是入门了七八了,不过如果你以为python就这么点东西,你觉得很简单啊,那你就错了,真正的东西在后面,前面我说的几大核心其实也不是多么高深多么厉害的,那些东西是基础很常用 ...

  4. Xamarin是无懈可击还是鸡肋?浅谈对Xamarin的学习

    微软宣布跨平台已经有几个年头,当C#代码可以在其他平台运行时,我相信对于每个热爱.net的程序猿还是十分欣慰的,最近工作需要在一直研究和学习.net的跨平台开发Xamarin,网上对其优点总结也是一大 ...

  5. OpenLdap 对接内部系统(Gitlab+Wiki+Jumpserver+Openvpn)配置

    LDAP 全称轻量级目录访问协议(英文:Lightweight Directory Access Protocol),是一个运行在 TCP/IP 上的目录访问协议.目录是一个特殊的数据库,它的数据经常 ...

  6. 计算机基础-CPU

    CPU(Central Processing Unit中央处理器)由运算器和控制器组成--微机性能的集成度最高的核心部件 1.金属触点 2.附带散热器 风冷式 热管散热式 水冷式等 扣具结构要和CPU ...

  7. 从研发到市场,一个C#程序员半年神奇之旅

    序 距离上次在博客园发布文章已经过了大约有一年了,由于最近一系列神奇的际遇,让我非常强烈意愿的提起笔来给大家描述我最近一段时间的经历,希望大家根据我的经历做一些参考,我尽量写的逻辑通顺,如果各位兄弟阅 ...

  8. system函数的应用

    system函数的两个简单应用 1.调用cmd命令.例:(打开计算器) #include <stdlib.h> int main() { system("calc"); ...

  9. PyQt5 + QtDesigner

    看到网上蛮多介绍做界面开发时可以借助QtDesigner进行快速完成布局,搞了半天在电脑里却找不到该工具,网上查了一下,原来是要额外安装一个pyqt5的工具包,下面结合亲身一步一步操作记录下来,也方便 ...

  10. django知识点回顾(上)

    Django---知识点: 1. 配置文件: media: avatar = models.FileField(upload_to='avatar')#数据库里的model MEDIA_ROOT=os ...