2012-07-07 46 views
1

我的客户端从另一个客户端获取一个流,但我的客户端只需从该流的中间读取。WCF Stream-changing position

在WCF中,我得到的流无法转换为FileStream,即使其他客户端在开始时创建该流时为FileStream,然后才将该流发送给我的客户端。

这就是为什么我的客户不能做到这一点:

Stream1.Read(Buffer, Middle_Of_Stream, Buffer.Length) 

任何解决方案将不胜感激!

* streaming mode = streaming。

回答

1

您在客户端上获取的流无法转换为文件流,因为它可能会绑定到用于传输的网络流。服务器中的FileStream不能(也不应该,因为很多原因,安全往往是其中之一)被客户端访问,所以WCF做的是从文件流中读取,并将字节复制到网络流中。在客户端上,您将获得只读(和不可查找)流。

如果您想在客户端将其转换为文件流,您可以创建一个新文件(可能位于临时目录中),然后保存在代理服务器调用的流。

+0

读取所有的流并将其打包到文件流中,然后阅读我需要的部分,这不是一个好的解决方案。我必须找到一种方法来只读**仅在开始/中间/结束时的几个字节。你还有什么其他选择? – 2012-07-12 11:54:44

+1

如果您只想读取一些字节,则更改您的操作以便不是从整个文件返回流,而是从您感兴趣的文件部分返回流。除了现在需要的操作之外,您的操作需要采用偏移和计数参数。 – carlosfigueira 2012-07-12 23:16:19

+0

谢谢,它的工作很棒! – 2012-07-13 16:23:55