WCF OperationContract для дуплексных и недуплексных конечных точек - PullRequest
3 голосов
/ 11 мая 2011

Я пытаюсь разместить службу WCF, которая поддерживает wshttpbinding и basichttpbinding. Причина в том, что для настольных клиентов мне нужен дуплекс, а для клиентов Windows Mobile - нет.

Допустим, у меня есть 3 OperationContracts, 2 из них нуждаются в дуплексе, а 1 - нет.

Так можно ли выставить 2 OperationContract с wsHttpBinding, а последний с просто basicHttpBinding?

Потому что, когда я пытался, я получаю эту ошибку:

Контракт требует сеанса, но привязка 'BasicHttpBinding' не требует поддерживает это или не настроен правильно, чтобы поддержать его.

Есть ли способ заставить эту работу? Или мне нужно создавать отдельные службы WCF для каждой привязки?

Спасибо за совет и помощь.

Ответы [ 2 ]

2 голосов
/ 11 мая 2011

Каждая конечная точка всегда предоставляет все операции для той службы, которую она представляет.

Вы не можете выставить свою «базовую» конечную точку для одного метода Service1 и свою дуплексную конечную точку для двух других.

Если вам нужна гибкость такого рода, вам нужно создать две отдельные реализации служб - одну, которая обрабатывает дуплексные операции, другую, которая обрабатывает другие.

0 голосов
/ 11 мая 2011
 <endpoint 
         address="ws" 
         binding="wsHttpBinding" 
         contract="YourNamespace.IMyService" />
     <endpoint 
         address="basic" 
         binding="basicHttpBinding"
         contract="YourNamespace.IMyService" />

Теперь вы можете получить доступ к сервису из diff-клиентов, используя,

http://localhost/ws 
http://localhost/basic,

, базовый адрес равен

       <host>
           <baseAddresses>
                <add baseAddress="http://localhost/" />
            </baseAddresses>
       </host>

Если вы обращаетесь с использованием базового URI, сеансне будет создан.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...