我正在使用XmlTextReader.ReadElementContentAsBinHex遇到内存膨胀问题。我首先要说的是,我不是选择使用十六进制,而是因为需要与遗留系统互操作。
int read;
var buffer = new byte[4096];
while((read = reader.ReadElementContentAsBinHex(buffer, 0, buffer.Length)) > 0)
stream.Write(buffer, 0, read);
对于大小超过64M的元素内容,我得到一个OutOfMemoryException,它似乎与读者内部StringBuilder中的分配累积有关。不幸的是,我无法做到这一点,因为我在IXmlSerializable对象中使用它,我被迫使用XmlTextReader(它不支持ReadValueChunk之类的东西)。这感觉就像一个.NET错误,但我可能会陷入困境。任何人都有任何聪明的想法?