在c#.net中更改keep alive属性

时间:2016-07-22 13:10:04

标签: c# timeout webclient keep-alive http-1.1

我正在努力达到客户的要求。 我有一个Web服务,它反过来调用客户端的Web服务。我们的服务使用webclient的UploadString()属性向客户端服务发出请求。我经常向客户端服务请求,所以我想保持连接活着。我发现在HTTP 1.1中有一个叫做的功能“KeepAlive”允许持久连接。我的问题是,是否可以通过c#代码配置此keepalive的超时属性?

感谢您的帮助:)

1 个答案:

答案 0 :(得分:0)

要使用该方法,必须创建一个派生自WebClient的类,请参阅此示例。你也可以在那里设置超时,keepalive,tcpkeepalive。并使用此类,而不是WebClient:

  public class WebClientExtended : WebClient
  {
    protected override WebRequest GetWebRequest(Uri uri)
    {
      var w = (HttpWebRequest) base.GetWebRequest(uri);
      w.Timeout = 5000;      // Set timeout
      w.KeepAlive = true;    // Set keepalive true or false
      w.ServicePoint.SetTcpKeepAlive(true, 1000, 5000);  // Set tcp keepalive
      return w;
    }
  }