Почему wsHttpBinding не поддерживает потоковую передачу? - PullRequest
10 голосов
/ 10 декабря 2010

Почему wsHttpBinding не поддерживает потоковую передачу?

РЕДАКТИРОВАТЬ: Чтобы проверить мой комментарий о netTcpBinding, я попытался следующий код, который дает ошибку во время выполнения:

<netTcpBinding >
        <binding name="myBinding"  transferMode="Streamed">          
          <reliableSession enabled="true"/>
        </binding>
</netTcpBinding>

Исключение во время выполнения:

Unhandled Exception: System.InvalidOperationException: Transfer mode Streamed is
 not supported by ReliableSessionBindingElement.
   at System.ServiceModel.Channels.ReliableSessionBindingElement.VerifyTransport
Mode(BindingContext context)

если <reliableSession enabled="true"/> удален, код работает.

1 Ответ

12 голосов
/ 10 декабря 2010

WsHttpBinding не поддерживает потоковую передачу из-за надежного протокола обмена сообщениями (WS-RM), который требует буферизации сообщений на любом конце.

Как указано здесь ... больше информации о WS-RM .

Также есть еще один пост здесь , который объясняет, почему не можетдля потоковой передачи по сравнению с описанным выше ...

Это связано с тем, что WS-RM необходимо применять подпись / контрольные суммы ко всему сообщению как к единому элементу и т. д .;и это невозможно при потоковом переносе TransferMode, только с буферизованным TransferMode ...

Кроме того netTcpBinding фактически использует WS-RM для обеспечения надежности.

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