J'ai un service Web WCF qui renvoie un flux. Du coté du client quand j'essaye de le lire en utilisant le code ci-dessous, j'obtiens une exception à la ligne "Byte [] buffer = new Byte [outputMessage.FileByteStream.Length];" disant System.Notsupported. S'il vous plaît me conseiller sur ce que je fais mal ici.Exception WCF lors de l'obtention de la longueur du flux
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();
C'est un code très étrange. Pourquoi utilisez-vous le cycle while pour lire le flux lorsque vous l'avez déjà fait? –
Oui, je ne suis pas en désaccord avec vous car je suis très nouveau à ce sujet. S'il vous plaît pouvez-vous me suggérer une meilleure façon de faire la même chose. Merci – Amit