在startup.cs文件 初始化httpclient
services.AddHttpClient("KDClient").ConfigurePrimaryHttpMessageHandler(() =>
new HttpClientHandler() {
//使用cookie
UseCookies = true,
//考虑忽略使用代理
UseProxy = false,
//考虑增加连接数配置
MaxConnectionsPerServer = 100,
//考虑忽略重定向响应,这个会影响性能
// AllowAutoRedirect = false,
//考虑数据压缩设置
AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip
, ServerCertificateCustomValidationCallback = (message, cert, chain, error) => true });
然后注入使用
private readonly HttpClient _client;
private Uri uri;
/// <summary>
///
/// </summary>
/// <param name="httpClientFactory"></param>
public KDHttpClientService(IHttpClientFactory httpClientFactory)
{
KingdeeConfig kingdeeConfig = Configs.GetSection("KingdeeConfig").Get<KingdeeConfig>();
//_client =httpClient;
_client= httpClientFactory.CreateClient("KDClient");
_client.Timeout = new TimeSpan(0, 0, 60);
uri = new Uri(kingdeeConfig.CloudUrl);
_client.BaseAddress = uri;
_client.DefaultRequestHeaders.Add("Connection", "Keep-Alive");//保持长链接
_client.DefaultRequestHeaders.Add("Keep-Alive", "timeout=7200");
ServicePointManager.SetTcpKeepAlive(true, 7200000, 1000);//启用保活机制(保持活动超时设置为 2 小时,并将保持活动间隔设置为 1 秒。)
ServicePointManager.DefaultConnectionLimit = 512;//默认连接数限制为2,增加连接数限制
}