C# - 如何在WCF服务中读取流

时间:2011-05-24 02:13:29

标签: c# wcf stream

我有一个WCF服务,我想发送一个日志文件并在服务器上处理它。 合同是:

[OperationContract]
void LogFile(Stream file);

我在端点使用StreamedRequest。

我遇到的问题是我找不到在服务中读取流的方法。

当我调试调用时,我看到Stream是一个实例:

System.ServiceModel.Dispatcher.StreamFormatter.MessageBodyStream

从客户端发送MemoryStream。

那么......我怎样才能读到这个流?

感谢。

EDIT1: 我正在使用:

        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 个答案:

答案 0 :(得分:5)

我的不好,在客户端我忘了将流的位置设置为0,所以服务正在获取流的末尾位置

答案 1 :(得分:1)

不要担心提供给您的流的内部类型。只需像往常一样阅读流(例如StreamReader),一切都应该没问题。请注意,您无需在任何一方的流上调用DisposeClose,WCF将处理该问题。