首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#如何将HttpClient Keep-Alive设置为false

C#如何将HttpClient Keep-Alive设置为false
EN

Stack Overflow用户
提问于 2016-04-01 21:44:21
回答 5查看 57.2K关注 0票数 30

我在.NET上遇到了HTTP请求的低性能问题,对本地主机上REST API的HTTP GET请求大约需要500毫秒才能完成。我花了很多时间来修复它。我尝试过很多方法:HttpClientHttpWebRequestWebClientRestSharp。它们都不起作用。互联网上的大多数解决方案都说将Proxy参数设置为null,但它仍然不会更快地工作。

我发现减少这一时间的唯一方法是将request的Keep-Alive参数设置为false:

代码语言:javascript
复制
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
request.Method = "GET";
request.KeepAlive = false;

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

这很好用。时间减少到7-10毫秒。但现在,出于某些原因,我需要使用HttpClient而不是HttpWebRequest。我找不到如何将HttpClient的Keep-Alive设置为false。我发现的唯一一件事就是如何通过将"connection“头设置为"Keep-Alive”来将其设置为true。

我在HttpClient的POST请求中使用了以下代码:

代码语言:javascript
复制
        HttpClient _http = new HttpClient();
        _http.DefaultRequestHeaders.Accept.Clear();
        _http.DefaultRequestHeaders.Add("Connection", "Keep-Alive");
        _http.DefaultRequestHeaders.Add("Keep-Alive", "timeout=600");

        var content = new StringContent(
            request, Encoding.UTF8, "application/%appname%+xml");
        content.Headers.ContentType.Parameters.Add(
            new NameValueHeaderValue("type", "payload"));

        HttpResponseMessage response = await _http.PostAsync(uri, content);

它仍然需要大约500-600毫秒才能完成。

EN

回答 5

Stack Overflow用户

发布于 2016-07-29 07:19:43

设置HttpWebRequest.KeepAlive = true时,标头集为Connection: keep-alive

设置HttpWebRequest.KeepAlive = false时,头文件集为Connection: close

所以你需要

代码语言:javascript
复制
_http.DefaultRequestHeaders.Add("Connection", "close");
票数 33
EN

Stack Overflow用户

发布于 2018-05-08 12:58:05

使用以下代码在客户端上禁用HTTP Keep-Alive:

代码语言:javascript
复制
_http.DefaultRequestHeaders.ConnectionClose = true;

这会将Connection请求标头设置为close

票数 30
EN

Stack Overflow用户

发布于 2016-04-01 21:57:18

请看下面的代码:

代码语言:javascript
复制
HttpClient cli;
...
cli.DefaultRequestHeaders.Add("Connection", "keep-alive");
cli.DefaultRequestHeaders.Add("Keep-Alive", "600");
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36357943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档