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