【发布时间】:2010-10-28 03:04:24
【问题描述】:
我正在通过 WebClient() 使用 C#。
我正在测试发送了哪些标头,我注意到自动添加了以下标头。
Connection : Keep-Alive
有什么办法可以去掉吗?
【问题讨论】:
我正在通过 WebClient() 使用 C#。
我正在测试发送了哪些标头,我注意到自动添加了以下标头。
Connection : Keep-Alive
有什么办法可以去掉吗?
【问题讨论】:
今天早上我遇到了同样的问题。按照 Jon Skeet 的提示,可以通过继承 HttpWebRequest 到 WebClient 来实现:
class MyWebClient : WebClient
{
protected override WebRequest GetWebRequest(Uri address)
{
WebRequest request = base.GetWebRequest(address);
if (request is HttpWebRequest)
{
(request as HttpWebRequest).KeepAlive = false;
}
return request;
}
}
现在发送的标头将包括Connection : close
【讨论】:
class MyWebClient : WebClient { protected override WebRequest GetWebRequest(Uri address) { WebRequest request = base.GetWebRequest(address); if (request is HttpWebRequest wr) { wr.KeepAlive = false; } return request; } }
使用HttpWebRequest 而不是WebClient(它稍微不太方便,但不是很方便)并将KeepAlive 属性设置为false。
我尚未对此进行测试 - 可能它只会更改 Connection 标头的值而不是删除它 - 但值得一试。 Connection 属性的文档至少建议它只添加 Keep-Alive。
【讨论】: