Я получаю ошибку при попытке потока. Длина на Потоковом объекте, отправленном в мой метод WCF.
Unhandled Exception!
Error ID: 0
Error Code: Unknown
Is Warning: False
Type: System.NotSupportedException
Stack: at System.ServiceModel.Dispatcher.StreamFormatter.MessageBodyStream.get_Length()
Как Вы получаете длину потока? какие-либо примеры?
Stream.Length работает только в реализациях Stream, где доступен поиск. Обычно вы можете проверить, истинно ли Stream.CanSeek . Многие потоки, поскольку они потоковые , имеют характер, при котором невозможно узнать длину заранее.
Если вам необходимо знать длину, вам может потребоваться фактически буферизовать весь поток, предварительно загрузив его в память.
Вы не всегда можете получить длину потока. В случае сетевого потока единственный способ узнать длину - это, например, считывать данные из него, пока он не закроется.
Что вы пытаетесь сделать? Можете ли вы читать из потока, пока он не будет исчерпан, копируя данные в MemoryStream
по ходу дела?
Не всегда возможно получить длину потока, если он не поддерживает поиск. См. Таблицу исключений в классе Stream .
Например, поток, подключенный к другому процессу (сетевой поток, стандартный вывод и т. Д.), Может производить любой объем вывода, в зависимости от того, как написан другой процесс, и у инфраструктуры нет способа выяснить, сколько данные есть.
В общем случае вам просто нужно прочитать все данные до конца потока, а затем выяснить, сколько вы прочитали.
TcpClient.EndRead() должен возвращать количество байт, находящихся в потоке.
--Edit, конечно, вам нужно использовать TCP поток