考虑下面的代码:XmlMtomReader阅读策略
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();
的问题是,假定二进制附件的大小是100MB之间有时。有没有一种方法可以逐块读取元素的二进制附件,然后将其写入临时文件流,这样我就可以避免为空洞内容分配内存了?
第二个 - 甚至更具体的问题 - mtomReader是否在读取元素的内容之前创建mime二进制附件的内部缓存,即为二进制数据分配内存?还是直接从输入流中读取字节?
谢谢。但那也不代表我的问题。我正在使用XmlMtomReader,而不是WCF服务。 – sh0gged