Постоянное HTTP-соединение с RestSharp

Я использую RestSharp для использования веб-службы REST и будет делать большой объем вызовов за короткий промежуток времени.

Документация для API настоятельно рекомендует использовать постоянные HTTP-соединения для этого, однако я изо всех сил стараюсь, чтобы это работало с RestSharp.

Я попытался добавить заголовок "Connection: Keep-alive" в запрос, но когда я это сделаю, запрос завершится с ошибкой: "Keep-Alive и Close не могут быть установлены с использованием этого свойства".

Можно ли использовать этот заголовок с RestSharp или есть что-то еще, что мне нужно сделать, чтобы включить это?

Может ли кто-нибудь помочь? Спасибо.

Ответ 1

Чтобы получить хороший ответ, вам нужно задать хороший вопрос. Где в документации это сказано? (Link/Reference?) Сколько запросов является "большим объемом"? Кроме того, если вы разместите свой код для того, как вы добавили Connection: Keep-Alive в заголовки http, кто-то здесь сможет прокомментировать вашу технику и помочь вам в конкретной проблеме программирования.

Кроме того, Connection: Keep-Alive может уже присутствовать на исходящих HttpRequests! Проверьте это с помощью Fiddler или WireShark. Я видел несколько сообщений в блогах с записями wirehark запросов RestSharp, в которых присутствовал заголовок Connection: Keep-Alive без дополнительной настройки. Например, при тестировании других функций mvc3 с использованием RestSharp в качестве потребителя Jimmy Bogard фиксирует свои запросы RestSharp с помощью скрипача, у которого уже есть заголовок Connection: Keep-Alive,

По-видимому, это также поведение по умолчанию для встроенных классов .Net, таких как System.Net.Webclient для использования Connection: Keep-Alive. Ссылка Использует ли WebClient KeepAlive?

Я думаю, что использование keep alive будет скорее о вашем коде с использованием RestSharp оптимальным способом, чем настройкой самого RestSharp. Если вы хотите, чтобы ваше соединение было повторно использовано, вам нужно убедиться, что это позволяет использовать RestSharp, сохраняя один экземпляр RestClient в области видимости и повторно используя его во многих запросах на одном и том же хосте.

Снова используя Fiddler или WireShark поможет вам захватить некоторые HttpRequests для анализа.