【问题标题】:Why does console apps use proxy by default?为什么控制台应用默认使用代理?
【发布时间】:2018-06-28 15:40:45
【问题描述】:

我目前遇到了一些与控制台应用程序不同的类库问题。

控制台应用程序的目的是将消息发送到 azure 队列,它没有任何问题,并且可以在资源监视器中看到它通过我们的 Web 代理和我们的 azure 队列进行调用。这是默认完成的,无论如何我都没有告诉它应该使用这个代理。

另一方面,类库做同样的事情,但不使用代理,因此不能发送它的数据。

两个项目在调用发送消息的方式上是相同的,但出于某种原因是控制台应用程序,其目的只是发送消息,而库的意图相同,行为不同 - 为什么控制台应用程序是否尝试使用代理,我如何强制类库强制使用代理?

结论:

我如何强制Microsoft.ServiceBus.Messaging.QueueClient.send 使用代理而不是端口 443

【问题讨论】:

    标签: c# azure proxy


    【解决方案1】:

    据我所知,使用服务总线客户端时无法设置代理。

    Service Bus 客户端的唯一连接选项如下:

    HTTP - 端口 80

    HTTPS - 端口 443

    TCP - 9350 到 9354

    更多信息我们可以参考:

    ConnectivityMode Enum

    请在您的类库中,将连接模式设置为 Http 如下代码,然后重试:

    ServiceBusEnvironment.SystemConnectivity.Mode = ConnectivityMode.Http;
    

    与您的类似线程:Azure Service Bus working behind proxy

    【讨论】:

      【解决方案2】:

      回答我自己的问题。

      我通过创建 proxy.config 解决了这个问题,并将其添加到我的 app.config。

      proxy.config 格式:

      <?xml version="1.0"?>
      <defaultProxy enabled="true">
          <proxy autoDetect="False" proxyaddress="http://<proxyaddress>:<port>" />
          <bypasslist>
              <add address="localhost" />
          </bypasslist>
      </defaultProxy>
      

      并将 proxy.config 作为 system.net 配置添加到我的 app.config 中:

        <system.net>
          <defaultProxy configSource="proxy.config" />
        </system.net>
      

      【讨论】:

        猜你喜欢
        • 2020-06-07
        • 2019-03-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多