2014-03-06 60 views
5

我試圖通過Fiddler從NEST傳遞我的elasticsearch調用,以便我可以看到實際的json請求和響應。如何讓NEST與代理一起工作,如Fiddler

我已經做了以下創建我的客戶端,但該請求沒有通過代理推(如果提琴手是打開還是關閉,請求仍然到達elasticsearch也沒關係)。

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

提琴手沒有用戶名/密碼要求,所以我只是通過隨機文本。

我可以證實,在該點只是執行的請求我elasticClient具有指定與烏里填入代理財產之上,但與NEST增加了尾部斜槓前。

感謝

回答

5

好了,所以,我放棄了在鳥巢代理設置 - 他們似乎沒有任何區別。

但是,將NEST客戶端上的主機設置爲「http://ipv4.fiddler:9200」而不是本地主機將通過Fiddler路由該呼叫,並獲得期望的結果,允許我從Elasticsearch中查看請求和響應。

+0

很大,它的工作完美 –

4

如果你想看到的是.NET應用程序,使在小提琴手的要求,你可以在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是不是一種選擇。

+1

感謝馬亭,很好的提示! SetProxy方法在NEST ElasticClient的ConnectionSettings對象上做什麼? – richardwhatever

1

這應該使其工作:

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

this answer

1

結合所有的建議,工作的解決方案是:

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

上面的代碼並沒有幫助我。 所以,這裏是我的變種

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