How do i keep a connection alive in C#? I\'m not doing it right. Am i suppose to create an HttpWebRequest obj and use it to go to any URLs i need? i dont see a way to visit
I had a similar issue when HttpWebRequest.KeepAlive = true was not enough to keep it alive. The connection stayed on only after I set request.UnsafeAuthenticatedConnectionSharing = true and ServicePointManager.MaxServicePointIdleTime = 100000;//avoid 0 or low values
You can set the HttpWebRequest.KeepAlive property to true.
For the Proxies, there is a property also: HttpWebRequest.Proxy
Have you tried the HttpWebRequest.KeepAlive property? It sets the appropriate Keep-Alive HTTP header and does persist the connections. (Of course this must also be supported and enabled by the remote web server).
The HttpWebRequest.KeepAlive documentation on MSDN states that it is set to true by default for HTTP1.1 connections, so I suspect the server you're trying to contact does not allow connection persistence.
Proxy is used automatically and its settings are taken from your system (read Internet Explorer) settings. It is also possible to override the proxy settings via HttpWebRequest.Proxy property or by tweaking the application configuration file (see http://msdn.microsoft.com/en-us/library/kd3cf2ex.aspx).
Set HttpWebRequest.KeepAlive property True .NET will take care of the rest. It's just database connection pool. Works transparently.
You can create new connection freely .NET will figure it out that you are connecting an already connected server and will use it. Also depends on your Net.ServicePointManager.DefaultConnectionLimit
number it will establish new connections (if you do multhithreading).
If you're using Http 1.1 you shouldn't be using Keep-Alive as the connection is implicitly Keep-Alive.
The HttpWebRequest.KeepAlive
property can be set but if you're sending an Http 1.1 request it will not actually set the header unless you set it to Close.
Here's another question that has more info: is an HTTP/1.1 request implicitly keep-alive by default?