【问题标题】:MetadataExchangeClient using Web ProxyMetadataExchangeClient 使用 Web 代理
【发布时间】:2012-07-16 12:28:19
【问题描述】:

我正在尝试使用 MetadataExchangeClient 类连接到指向描述 WCF 服务的 WSDL 文件的 URI。

var mexClient = new MetadataExchangeClient(uri, MetadataExchangeClientMode.HttpGet);
var metaDocs = mexClient.GetMetadata();

问题是我无法直接访问这个 uri,需要通过 HTTP 代理服务器。 代理服务器 URL 可以在运行时更改,因此我不能简单地通过 app.config 文件对其进行配置。

在 MetadataExchangeClient 类中哪里可以指定代理服务器信息?

有人有想法吗? WCF 专家?

【问题讨论】:

    标签: c# wcf web-services


    【解决方案1】:

    您可以覆盖 GetChannelFactory 并提供可以创建合适端点的实现,即添加代理详细信息的 BasicHtppBinding。

    有关如何以编程方式设置绑定的线索,请参见此处。

    请参阅此处了解创建通道工厂的起点(请参阅帖子末尾的 3 cmets)

    这显示了如何将 MetadataExchangeClient 与自定义绑定一起使用:

    这是 MetadataExchangeClient 的 .NET Framework 源代码,因此您可以更好地了解它在做什么。

    【讨论】:

      【解决方案2】:

      您需要像这样在app.config 中指定代理:

      <system.net>
        <defaultProxy enabled="true">
         <proxy bypassonlocal="true"
                proxyaddress="http://proxy.domain.org:8888/" />
        </defaultProxy>
      </system.net>
      

      【讨论】:

      • 对不起,我忘了提到代理数据(url,凭据)是在运行时配置的。所以我不能在app.config 中对其进行硬编码。 (我更新了问题)。
      • 您能否包含有问题的代码?你是不是像this
      • 在我的应用程序中,用户可以在运行时配置代理。基于此,我必须禁用默认代理并使用新指定的代理设置。我必须立即拿起这些新设置。重新启动应用程序不是一种选择。
      • 用户更新代理时是否更新系统代理?你如何设置代理?
      • 不,系统代理没有更新。系统代理是默认的,但用户可以指定自定义代理,该代理只对应用程序有效。
      猜你喜欢
      • 2020-05-13
      • 1970-01-01
      • 2013-12-27
      • 2012-12-25
      • 1970-01-01
      • 2019-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多