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



我有一个 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),一切都应该没问题。请注意,您不需要在任一端的流上调用DisposeClose,WCF 将处理此问题。

相关内容

  • 没有找到相关文章

最新更新