首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Web API keep-alive头

Web API keep-alive头
EN

Stack Overflow用户
提问于 2013-06-27 16:56:54
回答 1查看 6.3K关注 0票数 1

我在Web API自托管上,我需要为每个请求发送一个keep-alive: close头(每次我都想要一个新的连接)。如何设置此全局配置?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-27 21:45:30

您可以使用HttpMessageHandler对每个请求/响应进行全局更改。您要查找的标头是Connection标头。由于某些原因,此标头以不同的方式公开。不能直接设置Connection标头,需要将ConnectionClose属性设置为true

像这样创建一个类:

代码语言:javascript
代码运行次数:0
运行
复制
public class CloseConnectionHandler : DelegatingHandler
    {
        protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
        {
            return base.SendAsync(request, cancellationToken).ContinueWith(t =>
                {
                    var response = t.Result;
                    response.Headers.ConnectionClose = true;
                    return response;
                });
        }
    }

并将其添加到您的消息处理程序集合中,

代码语言:javascript
代码运行次数:0
运行
复制
     config.MessageHandlers.Add(new CloseConnectionHandler());

我很好奇你为什么要这么做。我能想象到的唯一原因是,您期望的是数千个并发客户端,每个客户端在任何短时间内只发出一个请求。真的是这样吗?如果不是这样,您可能会受到相当大的性能影响。Http.sys堆栈将在2分钟不活动后自动关闭连接,因此您不会泄漏连接。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17338819

复制
相关文章

相似问题

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