Considérez le code suivant:XmlMtomReader stratégie de lecture
Stream stream = GetStreamFromSomewhere();
XmlDictionaryReader mtomReader =XmlDictionaryReader.CreateMtomReader
(
stream,
Encoding.UTF8,
XmlDictionaryReaderQuoatas.Max
);
/// ...
/// is there best way to read binary data from mtomReader's element??
string elementString = mtomReader.XmlReader.ReadElementString();
byte[] elementBytes = Covert.FromBase64String(elementString);
Stream elementFileStream = new FileStream(tempFileLocation);
elementFileStream.Write(elementBytes,0,elementBytes.Length);
elementFileStream.Close();
/// ...
mtomReader.Close();
Le problème est que la taille de la pièce jointe binaire censé être sur 100Mb parfois. Existe-t-il un moyen de lire le bloc de pièces jointes d'un élément par bloc, puis de l'écrire dans le flux de fichier temporaire afin d'éviter d'allouer de la mémoire pour le trou? Le deuxième problème - encore plus spécifique - mtomReader crée-t-il un cache interne de la pièce jointe mime binaire avant de lire le contenu de l'élément, c'est-à-dire allouer de la mémoire pour les données binaires? Ou lit-il directement les octets du flux d'entrée?
Merci. Mais cela n'influe pas non plus sur mes questions. Je travaille avec XmlMtomReader et non avec les services WCF. – sh0gged