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