3

netMessagingBinding を使用して Service Bus エンドポイントに接続する際に、HTTP プロキシを構成する際のヘルプが必要です。プロキシ サーバー経由でインターネットにアクセスしています。Azure のワーカー ロールでホストされている WCF サービスに Service Bus エンドポイント経由で接続しようとすると、アプリケーションがリモート エンドポイントに接続できないという例外が発生します。インターネットに直接アクセスして同じことをすると、すべてが完全に機能します。

4

1 に答える 1

4

プロキシ サーバーは、プロキシの種類によっては注意が必要です。web.config/app.config の設定を変更して、プロキシ サポートを有効にしてみてください。

自動的に検出:

  <system.net>
    <defaultProxy enabled="true" useDefaultCredentials="true" />
  </system.net>

プロキシ URL を定義:

  <system.net>
    <defaultProxy enabled="true" useDefaultCredentials="true" />
      <proxy autoDetect="True" proxyaddress="http://..."/>
    </defaultProxy>
  </system.net>

カスタム資格情報:

  <appSettings>
    <add key="ProxyUser" value="" />
    <add key="ProxyPassword" value="" />
    <add key="ProxyDomain" value="" />
    <add key="ProxyUrl" value="" />
  </appSettings>
  <system.net>
    <defaultProxy enabled="true">
      <module type="CustomProxyCredentials.ProxyBridge, CustomProxyCredentials"/>
    </defaultProxy>
  </system.net>

namespace CustomProxyCredentials
{
    public class ProxyBridge : IWebProxy
    {
        public ICredentials Credentials
        {
            get { return new NetworkCredential(ConfigurationManager.AppSettings["ProxyUser"], ConfigurationManager.AppSettings["ProxyPassword"], ConfigurationManager.AppSettings["ProxyDomain"]); }
            set { }
        }

        public Uri GetProxy(Uri destination)
        {
            return new Uri(ConfigurationManager.AppSettings["ProxyUrl"]);
        }

        public bool IsBypassed(Uri host)
        {
            return false;
        }
    }
}

接続モード:

Microsoft.ServiceBus.ServiceBusEnvironment.SystemConnectivity.Mode = Microsoft.ServiceBus.ConnectivityMode.Http;

とにかく、これが正しく機能するためには、構成が十分である必要があります。

于 2012-10-11T14:26:21.910 に答える