¿Cómo enviar el encabezado KeepAlive correctamente en c #?

Necesito enviar una solicitud como esta usando HttpWebRequest:

POST https://sap.site.com.mx/sap/bw/BEx?SAP-LANGUAGE=ES&PAGENO=1&CMD=PROCESS_VARIABLES&REQUEST_NO=0&CMD=PROCESS_VARIABLES&SUBCMD=VAR_SUBMIT&VARID= HTTP/1.1 User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: es-MX,es;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate Connection: keep-alive 

Sin embargo, no puedo enviar el encabezado de conexión. Este es mi código:

 // request HttpWebRequest request = CreateWebRequestObject(url); request.CookieContainer = this.cc; request.UserAgent = "Mozilla/5.0 (Windows NT 5.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2"; // headers request.Headers.Add("Accept-Encoding", "gzip, deflate"); request.Headers.Add("Accept-Language", " es-MX,es;q=0.8,en-us;q=0.5,en;q=0.3"); request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; request.KeepAlive = true; // it does not work as expected request.ServicePoint.Expect100Continue = false; // remove Expect header // post request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = buffer.Length; using (Stream stream = request.GetRequestStream()) stream.Write(buffer, 0, buffer.Length); 

Pero, cuando verifico la solicitud en Fiddler, la propiedad de Conexión no aparece.

Además, estas publicaciones no funcionan para mí:

  1. ¿Mantener una conexión http viva en C #?
  2. C # – Conexión: el encabezado keep-alive no se envía durante HttpWebRequest

¿Cómo envío el encabezado de conexión correctamente?

ACTUALIZAR

Esto agrega Keep-Alive usando HTTP / 1.0

 request.ProtocolVersion = HttpVersion.Version10; //request.KeepAlive = true; // not necessary 

Cuando se cambia la propiedad ProtocolVersion a HttpVersion.Version11, el encabezado Keep-Alive no se envía:

 request.ProtocolVersion = HttpVersion.Version11; request.KeepAlive = true; 

¿Cómo puedo enviar un encabezado Keep-Alive utilizando Http / 1.1?

Cuando se usa HTTP / 1.1, Keep-Alive está activado de forma predeterminada. Si se establece KeepAlive en false, se puede enviar un enlace de Conexión: Cerrar al servidor.

Tuve el mismo error con el código muy similar, y la configuración

 var sp = req.ServicePoint; var prop = sp.GetType().GetProperty("HttpBehaviour", BindingFlags.Instance | BindingFlags.NonPublic); prop.SetValue(sp, (byte)0, null); 

Lo reparé. ¿Está seguro de que ejecuta este código cada vez que crea httpwebrequest?