WCF流长度

3
我有以下代码用于将(文件)流发送到WCF客户端:

我有以下代码用于将(文件)流发送到WCF客户端:

 public Stream Download( string path )
    {

        try
        {
            FileStream stream = new FileStream(path, FileMode.Open, FileAccess.Read);

            return stream;

        }
        catch (Exception ex)
        {
            string error = ex.Message;

            return null;
        }
    }

我希望在客户端能够获取发送流的长度,但是Stream类不支持此操作。

有什么最好的方法吗?

谢谢, Tony

1个回答

4
[MessageContract]
public class SizedStreamMessage
{
   [MessageHeader]
   public long streamSize;

   [MessageBody] //Has to be just one MessageBody for streaming to work!
   public Stream theStream;
}

然后:

[OperationContract]
public SizedStreamMessage Download(string path)
{
 //Fill in streamSize...
 //Fill in theStream...
}

显然,这仅适用于您可以在服务器端获取其大小而无需缓冲整个流的流(FileStream应该可以工作,因为您始终可以获取文件的长度而无需实际读取文件)。


据我所知,您只需更改通过SOAP消息发送的消息并将其添加到消息头中即可。 我明白了,谢谢! 我可以使用这个。 - Tony The Lion

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接