使用Web代理的MetadataExchangeClient

时间:2012-07-17 14:39:46

标签: c# wcf web-services

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

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

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

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

有人有个主意吗? WCF专家?

2 个答案:

答案 0 :(得分:3)

您需要在app.config中指定代理,如下所示:

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

答案 1 :(得分:0)

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

请参阅此处,了解如何以编程方式设置Binding。

请参阅此处了解创建频道工厂的起点(参见帖子末尾的3条评论)

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

这是.NET Framework Source to MetadataExchangeClient,因此您可以更好地了解它正在做什么。