Зачем каждый раз создавать новый идентификатор сессии в wsHttpBinding

Я использую следующую конфигурацию, чтобы сделать мой сервис сессионным, но для каждого запроса сервис wcf отвечает мне новым идентификатором сеанса. Почему это так, что мне нужно сделать сессионным для этого клиента, чтобы для каждого запроса был один и тот же идентификатор сессии

<system.serviceModel>
    <bindings>
      <wsHttpBinding>
        <binding name="wsHttp">
          <readerQuotas maxStringContentLength="10240" />
          <reliableSession enabled="true" />          
        </binding>
      </wsHttpBinding>
    </bindings>
    <services>                  
      <service name="wcfservice.serviceclass" behaviorConfiguration="MyFileServiceBehavior">

        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:51/"/>
            <add baseAddress="net.tcp://localhost:52/"/>
          </baseAddresses>          
        </host>
        <endpoint address="pqr" binding="wsHttpBinding" bindingConfiguration="wsHttp"
          name="b" contract="wcfservice.Iservice" />
        <endpoint address="pqr" binding="netTcpBinding" 
          name="c" contract="wcfservice.Iservice" />      
      </service>
    </services>   
    <behaviors>
      <serviceBehaviors>
        <behavior name="MyFileServiceBehavior">
          <serviceMetadata httpGetEnabled="true" />              
        </behavior>
      </serviceBehaviors>
    </behaviors>

  </system.serviceModel>

1 ответ

Решение

По умолчанию сеанс инициируется при открытии канала, вы можете узнать больше об этом здесь в этой сессии в WCF

КАК значение по умолчанию параметра IsInitiating равно true, каждый из ваших вызовов начал новый сеанс. Подробнее об этом здесь

Так что в ваших операционных контрактах

[OperationContract(
    IsInitiating=false,
    IsTerminating=false
  )]
  public void MethodOne()
  {
    return;
  }
Другие вопросы по тегам