возобновление загрузки файла в поисках потока - PullRequest
0 голосов
/ 24 июня 2011

Я загружаю файлы с клиентов на сервер ... когда серверная программа получает поток, свойство Length не поддерживается и CanSeek сбрасывается, как будет возможен поиск ?? Я могу получить длину, если прочитаю ее на клиенте и отправлю в качестве заголовка сообщения в контракте на сообщение, но не знаю, как искать. Идеи ??

Ответы [ 2 ]

1 голос
/ 24 июня 2011

WCF не является технологией для передачи файлов. Более того, поиск не поддерживается StreamFormatter, используемым внутри компании, потому что сама идея поиска в распределенном приложении бессмысленна. Для правильной работы внутреннего потока должен быть сетевой протокол с потоком управления передаваемыми данными, а это не так. Внутренне поток - это только массив байтов. Это означает, что даже если WCF поддерживал поиск, вам все равно придется передавать все данные, прежде чем искать позицию.

Если вам нужна функция возобновления, вы должны реализовать ее самостоятельно, вручную создавая порции данных, загружая их и добавляя их в файл на сервере. Сервер будет контролировать последний правильно полученный блок и отказываться от уже пропущенных блоков. MSDN имеет пример реализации с использованием этого в качестве пользовательского канала.

0 голосов
/ 24 июня 2011

Пример потока http://go.microsoft.com/fwlink/?LinkId=150780 делает то, что вы пытаетесь сделать.

WCF \ Основные \ Контракт \ Сервис \ Поток \ CS \ Stream.sln

образец объясняется здесь

http://msdn.microsoft.com/en-us/library/ms751463.aspx

...