Как заставить NEST работать с прокси, например Fiddler

Я пытаюсь передать вызовы elasticsearch из NEST через Fiddler, чтобы видеть фактические запросы и ответы json.

Я сделал следующее, чтобы создать свой клиент, но запросы не передаются через прокси-сервер (не имеет значения, включен Fiddler или нет, запрос все равно попадает в elasticsearch).

ConnectionSettings cs = new ConnectionSettings(uri);
cs.SetProxy(new Uri("http://localhost:8888"),"username", "password");
elasticClient = new ElasticClient(cs);

Fiddler не требует ввода имени пользователя/пароля, поэтому я просто передаю случайный текст.

Я могу подтвердить, что в момент непосредственно перед выполнением запроса мой elasticClient имеет свойство прокси, заполненное Uri, указанным выше, хотя с косой чертой в конце, добавленной NEST.

Спасибо


person richardwhatever    schedule 06.03.2014    source источник


Ответы (6)


Итак, я отказался от настроек прокси-сервера NEST — похоже, они не имели никакого значения.

Однако установка хоста в клиенте NEST на «http://ipv4.fiddler:9200" вместо localhost направляет вызов через Fiddler и достигается желаемый результат, позволяющий мне видеть как запросы, так и ответы от Elasticsearch.

person richardwhatever    schedule 08.03.2014

Если вы хотите увидеть запросы, которые приложение .net делает в fiddler, вы можете указать прокси-сервер в файле web/app.config.

Как указано на сайте скрипача

http://docs.telerik.com/fiddler/configure-fiddler/tasks/configuredotnetapp

<system.net>
    <defaultProxy>
        <proxy 
            autoDetect="false" 
            bypassonlocal="false" 
            proxyaddress="http://127.0.0.1:8888" 
            usesystemdefault="false" />
        </defaultProxy>
</system.net>

Удобно, если изменить имя хоста на ipv4.fiddler невозможно.

person Martijn Laarman    schedule 10.03.2014
comment
Спасибо, Мартейн, хороший совет! Что делает метод SetProxy с объектом ConnectionSettings NEST ElasticClient? - person richardwhatever; 11.03.2014

Код выше мне не помог. Итак, вот мой вариант

var node = new Uri("http://localhost.fiddler:9200");
var settings = new ConnectionSettings(node)
   .DisableAutomaticProxyDetection(false)
person moskalevN    schedule 09.10.2014

Это должно заставить его работать:

var settings = new ConnectionSettings(...)
    .DisableAutomaticProxyDetection(false);

См. этот ответ.

person Doron Yaacoby    schedule 06.08.2014

Сочетая все предложения, рабочее решение:

var node = new Uri("http://myelasticsearchdomain.com:9200");
var settings = new ConnectionSettings(node)
   .DisableAutomaticProxyDetection(false)
   .SetProxy(new Uri("http://localhost:8888"), "", "");
person Funbit    schedule 08.08.2014

Это работает в NEST версии 7.6.1, и нет необходимости переключать:

Дисаблеавтоматикпроксидетектион

var settings = new ConnectionSettings(...);
settings.Proxy(new Uri(@"http://proxy.url"), "username", "password");
person Antonio Bruno    schedule 06.05.2020