C # - Как читать поток в сервисе WCF - PullRequest
0 голосов
/ 24 мая 2011

У меня есть служба WCF, куда я хотел бы отправить файл журнала и обработать его на сервере.Контракт:

[OperationContract]
void LogFile(Stream file);

И я использую StreamedRequest в конечной точке.

У меня проблема в том, что я не могу найти способ чтения потока в службе.

Когда я отлаживаю вызов, я вижу, что Stream является экземпляром:

System.ServiceModel.Dispatcher.StreamFormatter.MessageBodyStream

С клиента я отправляю MemoryStream.

Итак ... Как я могу прочитатьstream?

Спасибо.

Edit1: im использую:

        Stream serviceStream = new MemoryStream();
        byte[] buffer = new byte[10000];
        int bytesRead = 0;
        do
        {
            bytesRead = file.Read(buffer, 0, buffer.Length);
            serviceStream.Write(buffer, 0, bytesRead);
        } while (bytesRead > 0);
        serviceStream.Position = 0;

для чтения потока, ничего не выходит, всегда 0

Ответы [ 2 ]

5 голосов
/ 24 апреля 2012

Плохо, в клиенте я забыл установить позицию потока на 0, поэтому служба получала поток с позицией в конце

1 голос
/ 24 мая 2011

Не беспокойтесь о внутреннем типе данного вам потока.Просто прочитайте поток, как обычно (например, с StreamReader ), и все должно быть в порядке.Обратите внимание, что вам не нужно вызывать Dispose или Close в потоке с обеих сторон, WCF справится с этим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...