【问题标题】:How to get NEST to work with Proxy, like Fiddler如何让 NEST 使用代理,如 Fiddler
【发布时间】:2020-05-06 21:23:17
【问题描述】:

我正在尝试通过 Fiddler 从 NEST 传递我的 elasticsearch 调用,以便查看实际的 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 添加了尾部斜杠。

谢谢

【问题讨论】:

    标签: nest


    【解决方案1】:

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

    但是,将 NEST 客户端上的主机设置为“http://ipv4.fiddler:9200”而不是 localhost,通过 Fiddler 路由调用,并实现了允许我查看来自 Elasticsearch 的请求和响应的预期结果。

    【讨论】:

      【解决方案2】:

      如果您想查看 .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 会很方便。

      【讨论】:

      • 感谢 Martijn,好建议! SetProxy 方法对 NEST ElasticClient 的 ConnectionSettings 对象有什么作用?
      【解决方案3】:

      以上代码对我没有帮助。 所以,这是我的变种

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

      【讨论】:

        【解决方案4】:

        这应该使它工作:

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

        this answer

        【讨论】:

          【解决方案5】:

          结合所有建议,可行的解决方案是:

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

          【讨论】:

            【解决方案6】:

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

            禁用自动代理检测

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

            【讨论】:

              猜你喜欢
              • 2011-08-26
              • 2020-04-21
              • 2010-11-28
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-09-21
              相关资源
              最近更新 更多