WCF:修复使用externalMetadataLocation时的端点地址

WCF:修复使用externalMetadataLocation时的端点地址,wcf,Wcf,WCF允许您指定应与服务一起发布的外部WSDL文件,而不是WCF生成的WSDL。在WSDL优先的设计方法中,发布源WSDL而不是生成的WSDL非常有意义 这是使用externalMetadataLocation设置的: <serviceBehaviors> <behavior> <serviceMetadata httpGetEnabled="true" externalMetadataLocation="path_to_my_wsdl.wsdl"/&g

WCF允许您指定应与服务一起发布的外部WSDL文件,而不是WCF生成的WSDL。在WSDL优先的设计方法中,发布源WSDL而不是生成的WSDL非常有意义

这是使用externalMetadataLocation设置的:

<serviceBehaviors>
  <behavior>
    <serviceMetadata httpGetEnabled="true" externalMetadataLocation="path_to_my_wsdl.wsdl"/>
    <serviceDebug includeExceptionDetailInFaults="false"/>
  </behavior>
</serviceBehaviors>

我遇到的问题是,当我这样做时,它会直接为WSDL提供服务,而WSDL具有错误的端点地址。我希望在运行时将端点地址替换为服务的实际端点地址(根据部署位置的不同而有所不同)


有没有一种简单的方法可以做到这一点?

我不是WCF专家,但您不能通过在配置文件(web.config)的端点上指定它来做到这一点,例如:

<system.serviceModel>
    <services>
        <service>
            <endpoint 
                listenUri="https://yourdomainname.com/servicename.svc"
                address="https://yourdomainname.com/servicename.svc">

注意:“listenUri”是物理地址,端点“address”是逻辑地址。即“listenUri”是服务的真正所在,而端点是客户端所要求的

如果它们是一样的,我相信你不需要听