Mehrere Streams in einem Stream werden nicht ordnungsgemäß an den Client übergeben.

Im WCF-Dienst fülle ich Stream gemäßdiese Frag mögen

   result.Stream = new MemoryStream();
            BinaryWriter writer = new BinaryWriter(result.Stream);
            foreach (string fileN in zipFiles)
            {
                byte[] fileBytes = File.ReadAllBytes(fileN);
                writer.Write(BitConverter.GetBytes(fileBytes.Length), 0, 4);
                writer.Write(fileBytes, 0, fileBytes.Length);
            }
            writer.Flush();
            return result; 

orher habe ich Stream von diesem zurückgegeben und alles funktioniert auf Service- und Client-Seite:

 result.Stream = new MemoryStream(File.ReadAllBytes(fileN));

Stream beMessageBodyMember aber nut hat es jetzt geändert, um alle Dateien in einem Stream zu speichern.

und Testmethode auf der Client-Seite:

 ExportClient export = new ExportClient("exportEndPoint");
        ExportResult_C result = export.Export(source);
        result.Stream.Position = 0;
        //result.Stream.SaveToFile("d:\\kkk.log");
        BinaryReader reader = new BinaryReader(result.Stream, System.Text.Encoding.UTF8);
        string pathToSave = string.Empty;
        while (result.Stream.Position < result.Stream.Length)
        {
            int size = reader.ReadInt32();
            byte[] data = reader.ReadBytes(size);
            pathToSave = "D:\\test\\" + new Random().Next(0, 2564586).ToString() + ".zip";
            File.WriteAllBytes(pathToSave, data);
        }

die Endpunktadresse:

 <endpoint address="net.tcp://localhost:2082/Exchange/Export.svc" binding="netTcpBinding" bindingConfiguration="largeSizeStreamTcp"
    contract="xxx" name="exportEndPoint"/>

und Bindungskonfiguration:

 <netTcpBinding>
    <binding openTimeout="00:00:03" maxReceivedMessageSize="2000000000" transferMode="Streamed" maxBufferSize="2000000000" >
      <readerQuotas maxDepth="32" maxArrayLength="2000000000" maxStringContentLength="2000000000" />
      <security mode="None" />
    </binding>
    <binding name="largeSizeStreamTcp"  transferMode="Streamed" receiveTimeout="00:30:00" sendTimeout="00:30:00" openTimeout="00:00:01" maxReceivedMessageSize="2000000000" maxBufferSize="2000000000" >
      <readerQuotas maxDepth="32" maxArrayLength="2000000000" maxStringContentLength="2000000000" />
      <security mode="None" />
    </binding>
  </netTcpBinding>
  <netNamedPipeBinding>

Ich glaube, Endpunkt und Bindung sind korrekt, da ich einen Dateistream zurückgeben und wieder speichern konnte, aber jetzt gibt es auf der Serviceseite keine Probleme mehr, aber wenn es vom Client kommt, hat Stream den Inhalt, die Länge und die Position verloren.

dies ist wirklich treibe mich die Wand hoch !!!

Weiß jemand, warum dies aufgetreten ist (auf Client-Seite)?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage