我有一个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
答案 0 :(得分:5)
我的不好,在客户端我忘了将流的位置设置为0,所以服务正在获取流的末尾位置
答案 1 :(得分:1)
不要担心提供给您的流的内部类型。只需像往常一样阅读流(例如StreamReader),一切都应该没问题。请注意,您无需在任何一方的流上调用Dispose
或Close
,WCF将处理该问题。