如图所示,小弟刚学WCF,对于配置文件问题不是多理解,我自认为每一个服务契约都需要一个 地址
然后,客户端在调用的时候,有需要一个一个的添加服务引用。我想如果有五百个 地址 客户端假如都调用啦。但是现在我们服务端的主机改了。那么就意味着地址改了。那么客户端怎么改?服务端的配置文件也怎么改,那样改起来不是很麻烦吗?不知道我考虑的问题是不是多虑啦。希望各位给我一个明确的思路在网上看见动态配置地址的文章,不怎么理解,希望高人能指点迷津

解决方案 »

  1.   

    改地址,你用的是http绑定,绑定应该不用改
      

  2.   

    因为你的配制文件是图片,所以用我的来说明。<?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <system.serviceModel>
        <services>
          <service name="CollectDakInfo.CollectBll" behaviorConfiguration="all">
            <host>
              <baseAddresses>
                <add baseAddress="net.tcp://localhost:8500" />
              </baseAddresses>
            </host>
            <endpoint address="A" binding="netTcpBinding" bindingConfiguration="bd" contract="CollectDakInfo.DakContract" />
    <endpoint address="B" binding="netTcpBinding" bindingConfiguration="bd" contract="CollectDakInfo.DakContract" />
    <endpoint address="C" binding="netTcpBinding" bindingConfiguration="bd" contract="CollectDakInfo.DakContract" />
            <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" />
          </service>
        </services>
        <bindings>
          <netTcpBinding>
            <binding name="bd">
              <security mode="None"></security>
            </binding>
          </netTcpBinding>
        </bindings>
        <behaviors>
          <serviceBehaviors>
            <behavior name="all">
              <serviceMetadata />
              <serviceDebug includeExceptionDetailInFaults="true" />
            </behavior>
          </serviceBehaviors>
        </behaviors>
      </system.serviceModel>
    </configuration>基地址一样,把终结点地址设置成不同就可以了,其它配制可以延用。调用的时候用基地址加终结点地址。
      

  3.   

    应该来说就算有改变也只会改变基地址,而不会去改变相对地址。此时所有服务的基地址一样,你只要在客户端改变一次就可以了,改动不大。如果WCF的ABC全变了,那就没办法了,只能手动去改客户端的调用了。不过此时就相当于是一个新的服务了。
      

  4.   


    <MetadataSources>
        <MetadataSource Address="http://localhost:8731/MyService/Service2" Protocol="http" SourceId="1" />
      </MetadataSources>
    这个是客户端引用的地址,如果服务地址改变了。我们暂且不管服务地址如何改变,比如我们引用了很多服务地址,但是它们都改变了。那么客户端的地址如何改变?难道要一个一个的去改配置文件?