如何让NEST与代理一起工作,如Fiddler

如何让NEST与代理一起工作,如Fiddler,nest,Nest,我试图通过Fiddler从NEST传递我的elasticsearch调用,这样我就可以看到实际的json请求和响应 我已经做了以下工作来创建我的客户机,但是请求并没有通过代理推送(不管Fiddler是开还是关,请求仍然会到达elasticsearch) Fiddler没有用户名/密码要求,所以我只传递随机文本 我可以确认,在执行请求之前,我的elasticClient已经用上面指定的Uri填充了代理属性,尽管NEST添加了一个尾部斜杠 谢谢好的,所以我放弃了NEST代理设置-它们似乎没有任何区别

我试图通过Fiddler从NEST传递我的elasticsearch调用,这样我就可以看到实际的json请求和响应

我已经做了以下工作来创建我的客户机,但是请求并没有通过代理推送(不管Fiddler是开还是关,请求仍然会到达elasticsearch)

Fiddler没有用户名/密码要求,所以我只传递随机文本

我可以确认,在执行请求之前,我的elasticClient已经用上面指定的Uri填充了代理属性,尽管NEST添加了一个尾部斜杠


谢谢

好的,所以我放弃了NEST代理设置-它们似乎没有任何区别


但是,将NEST client上的host设置为“”而不是localhost会通过Fiddler路由调用,并实现了允许我查看来自Elasticsearch的请求和响应的预期结果。

如果要查看.net应用程序在Fiddler中发出的请求,可以在web/app.config中指定代理

ConnectionSettings cs = new ConnectionSettings(uri);
cs.SetProxy(new Uri("http://localhost:8888"),"username", "password");
elasticClient = new ElasticClient(cs);
正如fiddler网站上记录的那样



如果将主机名更改为ipv4,则非常方便。fiddler不是一个选项。

这应该可以让它工作:

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

请参阅。

结合所有建议,工作解决方案是:

var node = new Uri("http://myelasticsearchdomain.com:9200");
var settings = new ConnectionSettings(node)
   .DisableAutomaticProxyDetection(false)
   .SetProxy(new Uri("http://localhost:8888"), "", "");
上面的代码对我没有帮助。 这是我的变体

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

这适用于NEST 7.6.1版,无需切换:

双自动检测


谢谢Martijn,好消息!SetProxy方法对NEST ElasticClient的ConnectionSettings对象执行什么操作?
var node = new Uri("http://localhost.fiddler:9200");
var settings = new ConnectionSettings(node)
   .DisableAutomaticProxyDetection(false)
var settings = new ConnectionSettings(...);
settings.Proxy(new Uri(@"http://proxy.url"), "username", "password");