C#摆脱WebClient中的Connection头

时间:2009-05-22 03:04:58

标签: c# webclient

我使用WebClient()来使用C#。

我正在测试发送的标头,我注意到会自动添加以下标头。

Connection : Keep-Alive

有没有办法删除它?

2 个答案:

答案 0 :(得分:15)

今天早上我遇到了同样的问题。根据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

答案 1 :(得分:4)

使用HttpWebRequest代替WebClient稍微不太方便,但不是很方便)并将KeepAlive属性设置为false

我还没有对此进行测试 - 它可能可能它只会更改Connection标头的值而不是删除它 - 但值得一试。 Connection属性的文档至少建议它只添加Keep-Alive。