HttpWebRequest.KeepAlive Property


The .NET API Reference documentation has a new home. Visit the .NET API Browser on to see the new experience.

Gets or sets a value that indicates whether to make a persistent connection to the Internet resource.

Namespace:   System.Net
Assembly:  System (in System.dll)

public bool KeepAlive { get; set; }

Property Value

Type: System.Boolean

true if the request to the Internet resource should contain a Connection HTTP header with the value Keep-alive; otherwise, false. The default is true.

Set this property to true to send a Connection HTTP header with the value Keep-alive. An application uses KeepAlive to indicate a preference for persistent connections. When the KeepAlive property is true, the application makes persistent connections to the servers that support them.


When using HTTP/1.1, Keep-Alive is on by default. Setting KeepAlive to false may result in sending a Connection: Close header to the server.

The following code example sets the KeepAlive property to false to avoid establishing a persistent connection with the Internet resource.

class HttpWebRequest_Connection
  static void Main()

      // Create a new HttpWebRequest object.Make sure that 
      // a default proxy is set if you are behind a firewall.
      HttpWebRequest myHttpWebRequest1 =

      // Assign the response object of HttpWebRequest to a HttpWebResponse variable.
      HttpWebResponse myHttpWebResponse1 = 

      Console.WriteLine("\nThe HTTP request Headers for the first request are: \n{0}",myHttpWebRequest1.Headers);
      Console.WriteLine("Press Enter Key to Continue..........");

      Stream streamResponse=myHttpWebResponse1.GetResponseStream();
      StreamReader streamRead = new StreamReader( streamResponse );
      Char[] readBuff = new Char[256];
      int count = streamRead.Read( readBuff, 0, 256 );
      Console.WriteLine("The contents of the Html page are.......\n");  
      while (count > 0) 
        String outputData = new String(readBuff, 0, count);
        count = streamRead.Read(readBuff, 0, 256);
      // Close the Stream object.
      // Release the resources held by response object.
      // Create a new HttpWebRequest object for the specified Uri.
      HttpWebRequest myHttpWebRequest2 = 
      // Assign the response object of 'HttpWebRequest' to a 'HttpWebResponse' variable.
      HttpWebResponse myHttpWebResponse2 = 
      // Release the resources held by response object.
      Console.WriteLine("\nThe Http RequestHeaders are \n{0}",myHttpWebRequest2.Headers);
      Console.WriteLine("\nPress 'Enter' Key to Continue.........");
    catch(ArgumentException e)
      Console.WriteLine("\nThe second HttpWebRequest object has raised an Argument Exception as 'Connection' Property is set to 'Close'");
    catch(WebException e)
      Console.WriteLine("WebException raised!");
    catch(Exception e)
      Console.WriteLine("Exception raised!");
      Console.WriteLine("Source :{0} " , e.Source);
      Console.WriteLine("Message :{0} " , e.Message);

.NET Framework
Available since 1.1
Return to top