Несколько конечных точек с несколькими контрактами в WCF - PullRequest
1 голос
/ 10 марта 2011

Привет, у меня есть 2 сервисных контракта IService1 и IService2

Я хочу разные конечные точки для каждого сервисного контракта, также я хочу использовать только basichttpbinding.

Предположим, адрес IService1 равен http://localhost:4040/MyApp/Service1.svcзатем

Я хочу получить доступ к IService2 с адресом http://localhost:4040/MyApp/Service1.svc/service2 или с адресом, отличным от адреса IService1

Возможно ли это?

1 Ответ

1 голос
/ 10 марта 2011

Вы размещаете это в IIS ?? Если так: IIS диктует ваши адреса - они определены как

http://YourServer/YourVirtualDirectory/YourService.svc

Итак, если вам нужны два отдельных адреса, вам нужны два отдельных виртуальных каталога ....

Или: self-host , тогда у вас полная свобода адресов!

Если вы используете хост самостоятельно, вы можете определенно определить сервис (реализующий оба интерфейса сервиса в одном классе реализации), который предоставляет две конечные точки:

<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. Это то, что вы ищете ??

...