加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 在WinRT的HttpClient类中使用Keep-Alive连接?

发布时间:2020-12-16 01:53:26 所属栏目:百科 来源:网络整理
导读:打开与服务器的连接时,我们的WinRT应用程序速度极慢.请求需要大约500毫秒才能运行.这阻碍了我们的一些场景. 在调试时,我们注意到当Fiddler处于活动状态时,请求要快得多 – 每个请求约100ms.稍后我们理解这是因为Fiddler在代理呼叫时使用了Keep-Alive连接,这
打开与服务器的连接时,我们的WinRT应用程序速度极慢.请求需要大约500毫秒才能运行.这阻碍了我们的一些场景.

在调试时,我们注意到当Fiddler处于活动状态时,请求要快得多 – 每个请求约100ms.稍后我们理解这是因为Fiddler在代理呼叫时使用了Keep-Alive连接,这使我们的代理呼叫更快.

我们以两种方式对此进行了双重检查.

>我们将UseProxy设置为false,并观察到请求恢复缓慢.
>我们关闭了Fiddler的“重用连接”选项,并观察到请求恢复缓慢.

我们尝试通过Connection头启用keep-alive(.Connection.Add(“Keep-Alive”))但这似乎没有任何影响 – 事实上,.NET组件似乎公然忽略了标头,并且没有按要求发送(再次通过Fiddler检查).

有谁知道如何在Windows 8,WinRT,HttpClient类中为请求设置keep-alive?

解决方法

以下设置正确的标题为我启用keep-alive(客户端是一个HttpClient)

client.DefaultRequestHeaders.Connection.Clear();
client.DefaultRequestHeaders.ConnectionClose = false;
// The next line isn't needed in HTTP/1.1
client.DefaultRequestHeaders.Connection.Add("Keep-Alive");

如果你想关闭keep-alive,请使用

client.DefaultRequestHeaders.Connection.Clear();
client.DefaultRequestHeaders.ConnectionClose = true;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读