我有一个 WCF 服务,我想在其中发送日志文件并在服务器上处理它。合同是:
[OperationContract]
void LogFile(Stream file);
我在端点中使用 StreamedRequest。
我遇到的问题是我找不到在服务中读取流的方法。
当我调试调用时,我看到 Stream 是以下各项的实例:
System.ServiceModel.Dispatcher.StreamFormatter.MessageBodyStream
从客户端发送内存流。
所以。。。如何读取流?
谢谢。
编辑1:我使用:
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,因此服务正在获取流,其位置位于末尾
不要担心提供给您的流的内部类型。只需像往常一样读取流(例如使用StreamReader),一切都应该没问题。请注意,您不需要在任一端的流上调用Dispose
或Close
,WCF 将处理此问题。