根据环境更改用于WCF服务的WSDL

时间:2019-11-26 17:10:00

标签: .net wcf wsdl wcf-endpoint

我在本地计算机上拥有WCF服务和.net客户端。我已经为客户端生成了wsdl。它有一堆文件,例如.svcinfo, .wsdl, .xsd, .svcmap, .cs。一些文件具有服务https://localhost:12345/foo/bar.svc

的地址

最终,将服务和客户端部署到测试中,然后再部署到生产中。那时我需要为客户端重新生成wsdl以便在.svcinfo, .wsdl, .xsd, .svcmap, .cs文件中反映正确的URL吗?还是更改客户端配置文件中的endpoint地址就足够了?

1 个答案:

答案 0 :(得分:0)

您绝对不需要这样做。我们通常通过其元数据端点公开有关WCF服务的元数据信息。然后,客户端可以通过添加服务引用来生成客户端代理类,并且代理类可以实现对服务的调用。

<services>
      <service name="WcfService1.Service1">
        <endpoint address="" binding="wsHttpBinding" contract="WcfService1.IService1"></endpoint>
        <!--metadata service endpoint-->
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"></endpoint>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <!--Enable service metadata publish-->
          <serviceMetadata/>
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
</behaviors>

客户端。
enter image description here
(可选)我们也可以以HTTP / https的形式发布服务数据,只需配置以下属性即可。

  <!--Enable service metadata publish-->
  <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>

通过这种方式,客户端可以直接下载WSDL / SingleWSDL文件,从而手动生成客户端代理类。
enter image description here
随时让我知道是否有什么可以帮助您的。