WCF Потоковая передача файлов
Я пытаюсь передать некоторые файлы через WCF, но как только метод вызывается из клиента, я получаю следующее сообщение:
The socket connection was aborted. This could be caused by an error processing
your message or a receive timeout being exceeded by the remote host, or an
underlying network resource issue. Local socket timeout was '00:10:00'.
Мой метод обернут в try...catch
, так что если есть что-то, генерирующее исключение из метода на сервере, оно должно зарегистрировать это в окне консоли, но ничего не регистрируется. Я также попытался запустить сервер локально и установить точки останова для метода, и метод, похоже, просто не вызывается.
Есть ли свойство или что-то, что нужно установить в соединении net.tcp, чтобы разрешить потоковую передачу на стороне клиента?
2 ответа
Есть ли свойство или что-то, что нужно установить в соединении net.tcp, чтобы разрешить потоковую передачу на стороне клиента?
Да, конечно! Вам нужно настроить конфигурацию на стороне клиента для использования потоковой передачи - либо в одном направлении (StreamedRequest, если вы хотите загрузить материал на сервер, либо StreamedResponse, если вы хотите загрузить с сервера, или просто Streamed, если вы выполняете потоковую передачу в обоих направлениях),
<system.serviceModel>
<bindings>
<netTcpBinding>
<binding name="streaming"
transferMode="StreamedResponse">
</binding>
</netTcpBinding>
</bindings>
<client>
<endpoint name="StreamEndpoint"
address="..."
binding="netTcpBinding"
bindingConfiguration="streaming"
contract="IYourService" />
</client>
</system.serviceModel>
Вы должны определить свою конфигурацию привязки под именем (как хотите), а затем сослаться на эту конфигурацию в <endpoint>
указав это имя в bindingConfiguration=
приписывать.
См. Документацию MSDN на странице Как: включить потоковую передачу для получения более подробной информации.
Вы должны настроить трассировку на сервере и открыть журнал для лучшего объяснения того, что происходит.
Взгляните на Service Trace Viewer Tool