在WCF Web服务的WSDL中提供不同的端点地址

时间:2011-02-22 04:19:16

标签: wcf web-services iis-7 wsdl

我有一个相当标准的WCF服务(托管在IIS7上),当使用?wsdl查询时生成相当标准的WSDL:

<wsdl:definitions>
  <!-- ... -->
  <wsdl:service>
    <wsdl:port>
      <soap:address location="https://machine/virtual_dir/servicename.svc"/>
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>

(省略无聊的位)

我正在以一种快速的方式将生成的WSDL中给出的地址更改为完全不同的地址,例如:

https://othermachine/other_dir/other_service.svc

最简单的方法是什么?

1 个答案:

答案 0 :(得分:10)

您可以看到几种方法:

  • WCF支持许多可扩展性点,而WSDL的生成就是其中之一。您可以编写自己的自定义WSDL生成器并将其插入WCF

  • 可能更简单的方法是生成您拥有的WSDL,然后手动调整它,并将该WSDL文件放在某处并将其配置为提供服务(而不是WCF在运行时生成WSDL,当请求时这样做)

您可以使用<serviceMetadata>行为配置选项#2:

<behaviors>
   <serviceBehaviors>
       <behavior name="StaticMetadata">
           <serviceMetadata httpGetEnabled="true"
                externalMetadataLocation="(url path to your static WSDL file)" />
       </behavior>
   </serviceBehaviors>
</behaviors>

如果执行此操作,并且您的服务使用此服务行为,则对WSDL或MEX数据的任何请求都将路由到您提供的静态WSDL,而不是使用WCF通常提供的自动生成的WSDL。