Для контракта требуется Session, но Binding 'BasicHttpBinding' не поддерживает его или неправильно настроен для его поддержки - PullRequest
14 голосов
/ 10 декабря 2010

Когда я использую SessionMode = SessionMode.Required в сервисном контракте, я получаю эту ошибку

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

кто-нибудь подскажет решение?

Ответы [ 2 ]

10 голосов
/ 19 декабря 2011

Это сообщение об ошибке редко сбрасывается.Здесь ответ выглядит так: basichttpbinding не поддерживает сессию.Поэтому вы должны использовать свойство ниже, если вы хотите его использовать.[ServiceContract (SessionMode = SessionMode.Allowed)] * ​​1001 *

Это означает, что если вы пытаетесь настроить несколько привязок, таких как basichttp, wshttp, net.tcp, WCF автоматически включит сеанс для привязки, отличной от basichttp.так что если вы установите SessionMode.Required вместо Allowed, то вы вынуждены не использовать basichttpbinding.

При этом для решения этой проблемы обычно требуется что-то вроде этого:

<system.serviceModel>
    <protocolMapping>
      <add scheme="http" binding="wsHttpBinding" bindingConfiguration="wsHttpBindingConfiguration" />
    </protocolMapping>
    <bindings>
      <wsHttpBinding>
        <binding name="wsHttpBindingConfiguration" transactionFlow="true" />
      </wsHttpBinding>
      .......
10 голосов
/ 10 декабря 2010

Поскольку это перечислено здесь , выберите wsHttpBinding или NetTcpBinding.WSHttpBinding переплет.

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