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

Другие вопросы по тегам