wcf具有单个地址的多个端点

时间:2013-04-02 17:11:24

标签: wcf

我已经在我的应用中导入了很多wcf服务。 例如

<endpoint address="http://localhost:1044/PersonSearchWebService.svc" behaviorConfiguration="ClientBehavior"
            binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IPersonSearchWebService"
            contract="WSPersonSearch.IPersonSearchWebService" name="BasicHttpBinding_IPersonSearchWebService" />
        <endpoint address="http://localhost:1044/TransferService.svc"
            binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ITransferService"
            contract="WSFileTransfer.ITransferService" name="BasicHttpBinding_ITransferService" />
        <endpoint address="http://localhost:1044/ScannedFileSearchWebService.svc"
            binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IScannedFileSearchWebService"
            contract="WSScannedFileSearch.IScannedFileSearchWebService"
            name="BasicHttpBinding_IScannedFileSearchWebService" />

它们共享相同的服务器地址。 我可以把它们拉成一个变量,因此我只需要在移动到实时服务器时在一个空间中修改配置吗?

由于

1 个答案:

答案 0 :(得分:3)

您可以在服务配置中定义基本地址,然后根据该基址在端点中使用相对地址:

<service name=".....">
   <host>
      <baseAddresses>
         <add baseAddress="http://localhost:1044/" />
      </baseAddresses>
   </host>

   <endpoint name="BasicHttpBinding_IPersonSearchWebService"
       address="PersonSearchWebService.svc" 
       behaviorConfiguration="ClientBehavior"
       binding="basicHttpBinding" 
       bindingConfiguration="BasicHttpBinding_IPersonSearchWebService"
       contract="WSPersonSearch.IPersonSearchWebService"  />

    <endpoint name="BasicHttpBinding_ITransferService" 
        address="TransferService.svc"
        binding="basicHttpBinding"  
        bindingConfiguration="BasicHttpBinding_ITransferService"
        contract="WSFileTransfer.ITransferService" />

    <endpoint name="BasicHttpBinding_IScannedFileSearchWebService"
        address="ScannedFileSearchWebService.svc"
        binding="basicHttpBinding" 
        bindingConfiguration="BasicHttpBinding_IScannedFileSearchWebService"
        contract="WSScannedFileSearch.IScannedFileSearchWebService" />
</service>

更新:遗憾的是,此功能仅适用于服务器端 - 客户端配置没有等效功能。

在客户端上,您需要全部拼出所有网址 - 即使他们共享例如服务器名称和端口。