我有一个相当标准的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
最简单的方法是什么?
答案 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。