2012-06-11 13 views
10

Estoy utilizando RestSharp para consumir un servicio web REST y realizaré un gran volumen de llamadas en un corto período de tiempo.Conexión HTTP persistente con RestSharp

La documentación para la API recomienda encarecidamente el uso de conexiones HTTP persistentes para hacer esto, sin embargo, estoy luchando para que esto funcione con RestSharp.

He intentado agregar el encabezado "Connection: Keep-alive" a la solicitud, pero cuando lo hago, la solicitud falla con el siguiente error: "Keep-Alive and Close no se puede establecer con esta propiedad".

¿No puedo usar este encabezado con RestSharp o hay algo más que deba hacer para habilitarlo?

¿Alguien puede ayudar? Gracias.

+0

Publique algunos de sus códigos (para mostrar cómo está utilizando RestSharp). Utilicé RestSharp bastante y nunca tuve un problema con las conexiones cerrando prematuramente. – EkoostikMartin

+0

Solo estoy usando el código de conexión RestSharp estándar, con el método genérico Execute . Para agregar el encabezado keep-alive solo estoy intentando request.AddHeader ("Conexión", "Keep-Alive"); pero esto falla como se describió anteriormente. –

+0

¿Cómo se puede resolver este problema? [Tengo el mismo problema] (https://github.com/restsharp/RestSharp/issues/781) – hellboy

Respuesta

6

Para obtener una buena respuesta, debe hacer una buena pregunta. ¿En qué parte de la documentación dice esto? (¿Enlace/referencia?) ¿Cuántas solicitudes es un "gran volumen"? Además, si publica el código de cómo agregó Connection: Keep-Alive a sus encabezados http, es posible que alguien aquí pueda comentar su técnica y ayudarlo con el problema de programación específico.

Además, Connection: Keep-Alive ya puede estar presente en las HttpRequests salientes. Verifíquelo usando Fiddler o WireShark. He visto algunas publicaciones de blog con capturas wireshark de solicitudes RestSharp que tenían el encabezado Connection: Keep-Alive presente sin ninguna configuración adicional. Por ejemplo, mientras prueba otras funcionalidades de mvc3 utilizando RestSharp como consumidor, Jimmy Bogard captura sus solicitudes de RestSharp con el violín que ya tiene el encabezado Connection: Keep-Alive.

Aparentemente, también es el comportamiento predeterminado para las clases incorporadas .Net como System.Net.Webclient para usar Connection: Keep-Alive. Referencia Does WebClient use KeepAlive?

Creo que hacer uso de Keep alive va a ser más sobre su código usando RestSharp de manera óptima que sobre la configuración de RestSharp. Si desea asegurarse de que su conexión se reutilice, debe asegurarse de que su uso de RestSharp lo permita manteniendo una instancia RestClient en el alcance y reutilizándola en múltiples solicitudes frente al mismo host.

Otra vez usando Fiddler o WireShark le ayudará a capturar algunas HttpRequests para su análisis.

Cuestiones relacionadas