在WCF中具有多个合同的多个端点

时间:2011-03-10 15:24:57

标签: wcf wcf-endpoint servicecontract

您好我有2份服务合约IService1和IService2

我想为每个服务合同设置不同的端点,我也只想使用basichttpbinding。

假设IService1地址为http://localhost:4040/MyApp/Service1.svc,那么

我想访问地址为http://localhost:4040/MyApp/Service1.svc/service2的IService2或IService1地址以外的地址

有可能吗?

1 个答案:

答案 0 :(得分:1)

你在IIS中托管这个吗?如果是这样:IIS指示您的地址 - 它们被定义为

http://YourServer/YourVirtualDirectory/YourService.svc

因此,如果您需要两个单独的地址,则需要两个单独的虚拟目录....

或者:自我主持人,那么您就拥有完全的地址自由!

如果你是自托管的,你肯定可以定义一个服务(在同一个实现类中实现两个服务接口)来暴露两个端点:

<services>
   <service name="YourNamespace.ServiceImplementationClass">
      <host>
         <baseAddresses>
            <add baseAddress="http://localhost:4040/MyApp/Service1.svc" />
         </baseAddresses>
      </host>
      <endpoint name="Service1"
          address=""
          binding="basicHttpBinding"
          contract="YourNamespace.IService1" />
      <endpoint name="Service2"
          address="Service2"
          binding="basicHttpBinding"
          contract="YourNamespace.IService2" />
   </service>
</services>

因此,您的服务1可以通过定义的基本地址(http://localhost:4040/MyApp/Service1.svc)访问,而您的服务2则位于http://localhost:4040/MyApp/Service1.svc/Service2。这就是你要找的东西吗?