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

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

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

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

Ответы

Ответ 1

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

Ответ 2

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

Это означает, что если вы пытаетесь настроить несколько привязок, таких как 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>
      .......