Некоторые вопросы о передаче файла с использованием WCF - PullRequest
2 голосов
/ 04 марта 2009

У меня есть служба WCF, размещенная в службе Windows. Теперь я хочу добавить функцию передачи файлов в этот сервис, но у меня есть следующие вопросы; учитывая, что передача файлов - это и то, и другое, а файлы не большие (около 10 МБ):

1: Я прочитал в MSDN , что "Операции, выполняемые через потоковый транспорт, могут иметь контракт не более чем с одним входным или выходным параметром" . Означает ли это, что у меня не может быть операции с более чем одним параметром или что?

2: Если я использую Streamed для режима передачи, должен ли я заботиться о размере данных, передаваемых в операциях, чьи параметры "in" или "out" являются коллекциями?

3: Должен ли я изменить что-либо еще, кроме TransferMode, чтобы установить режим Streamed?

Спасибо.

1 Ответ

3 голосов
/ 04 марта 2009

Взгляните на этот пост , чтобы узнать о некоторых направлениях передачи файлов WCF. Вы должны использовать кодировщик MTOM. У поста есть несколько веских причин, почему и есть несколько примеров.

  1. Да.
  2. До тех пор, пока все это кодируется с использованием MTOM, размер не должен иметь значения. Просто убедитесь, что вы установили maxReceivedMessageSize в конфигурации привязки.
  3. Это и создание контракта сообщений для сообщений. Смотрите ниже:

Пример сообщения договора:

[MessageContract()]
public class FileTransferRequest
{
  [MessageHeader(MustUnderstand = true)]
  public string FileName;

  [MessageBodyMember(Order = 1)]
  public System.IO.Stream Data;
}
...