pollingDuplexHttpBinding с режимом безопасности TransportWithMessageCredential. ответ от сервера не приходит к клиенту - PullRequest
0 голосов
/ 24 января 2012

мы используем pollingDuplexHttpBinding по SSL с режимом безопасности TransportWithMessageCredential . Служба получает сообщения от клиента, но клиент не получает ответа.

Если мы изменим режим безопасности с TransportWithMessageCredential на Транспорт , все будут работать хорошо.

Рабочая конфигурация

Комментарии показывают, что не работает config.

Сервисная конфигурация

<behaviors>
  <serviceBehaviors>
    <behavior name="">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="true" />
      <!--
      <serviceCredentials>
        <userNameAuthentication userNamePasswordValidationMode="Custom" 
                                customUserNamePasswordValidatorType="myType" />
      </serviceCredentials>
      -->
    </behavior>
  </serviceBehaviors>
</behaviors>

<bindings>
  <pollingDuplexHttpBinding>
    <binding name="multipleMessagesPerPollPollingDuplexHttpBinding"
              duplexMode="SingleMessagePerPoll">
      <!--
      <security mode="TransportWithMessageCredential" />
      -->
      <security mode="Transport" />
    </binding>
  </pollingDuplexHttpBinding>
</bindings>

<services>
  <service name="Gam.Service.GamSrv">
    <endpoint
        address=""
        binding="pollingDuplexHttpBinding"
        bindingConfiguration="multipleMessagesPerPollPollingDuplexHttpBinding"
        contract="Gam.Service.Abstract.IUserSrv" />
    <endpoint
        address="mex"
        binding="mexHttpBinding"
        contract="IMetadataExchange" />
  </service>
</services>

Конфигурация клиента SilverLight 4

<bindings>
  <customBinding>
    <binding name="pd">
      <!--
      <security authenticationMode="UserNameOverTransport" />
      -->
      <pollingDuplex duplexMode="SingleMessagePerPoll" />
      <binaryMessageEncoding />
      <httpsTransport transferMode="Buffered" />
    </binding>
  </customBinding>
</bindings>
<client>
  <endpoint address="/GamSrv.svc"
    binding="customBinding"
    bindingConfiguration="pd"
    contract="GamSrvReference.IUserSrv"
    name="MyDuplexContract" />
</client>

1 Ответ

0 голосов
/ 25 января 2012

Решение - добавить includeTimestamp = "false" в конфигурации безопасности клиента

<security authenticationMode="UserNameOverTransport" includeTimestamp="false" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...