获取流长度时发生WCF异常

获取流长度时发生WCF异常,wcf,Wcf,我有一个返回流的WCF web服务。在客户端,当我尝试使用下面的代码读取它时,在第行“Byte[]buffer=new Byte[outputMessage.FileByteStream.Length];”处出现异常,表示System.Notsupported。请告诉我我做错了什么 FileMetaData metaData = new FileMetaData(); metaData.ProductIDsArray = new string[] { "1", "

我有一个返回流的WCF web服务。在客户端,当我尝试使用下面的代码读取它时,在第行“Byte[]buffer=new Byte[outputMessage.FileByteStream.Length];”处出现异常,表示System.Notsupported。请告诉我我做错了什么

        FileMetaData metaData = new FileMetaData();
        metaData.ProductIDsArray = new string[] { "1", "2" };
        metaData.AuthenticationKey = "test";
        FileDownloadMessage inputParam = new FileDownloadMessage(metaData);
        FileTransferServiceClient obj = new FileTransferServiceClient();
        FileDownloadReturnMessage outputMessage = obj.DownloadFile(inputParam);
        Byte[] buffer = new Byte[outputMessage.FileByteStream.Length];
        int byteRead = outputMessage.FileByteStream.Read(buffer, 0, buffer.Length);
        Response.Buffer = false;

        Response.Buffer = false;
        Response.ContentType = "application/x-zip";
        Response.AppendHeader("content-length", buffer.Length.ToString());
        Stream outStream = Response.OutputStream;


        while (byteRead > 0)
        {
            outStream.Write(buffer, 0, buffer.Length);
            byteRead = outputMessage.FileByteStream.Read(buffer, 0, buffer.Length);
        }
        outputMessage.FileByteStream.Close();
        outStream.Close();

您正在读取的流不支持获取流的长度(很可能是因为在下载整个文件之前,长度是未知的)。分块读取流-类似于
循环时的
方式,但有一个固定大小的缓冲区-一旦为byteRead返回0,您就会知道您已经到达流的末尾。

您正在读取的流不支持获取流的长度(最有可能的原因是,在下载整个文件之前,不会知道长度).分块读取流-类似于
while
循环的方式,但是有一个固定大小的缓冲区-一旦你为byteRead返回0,你就会知道你已经到达了流的末尾。

这是非常奇怪的代码。你为什么要使用while循环来读取流,而你已经这样做了?是的,我不会不同意你的意见,因为我非常害怕谢谢这是一个非常奇怪的代码。既然你已经使用了while循环来读取流,为什么还要使用while循环呢?是的,我不会不同意你的观点,因为我对这一点非常陌生。请你给我一个更好的方法。谢谢你的回复。我应该用多大的尺寸We to bytearray?我不知道我将收到的文件大小可以是10 mb,也可以是500 mb。请建议谢谢回复。我应该给bytearray什么大小?我不知道我将收到的文件大小可以是10 mb,也可以是500 mb。请建议