Я использую Xsd2Code для сериализации моего объекта, чтобы сгенерировать Xml-файл.Xsd2Code serialize file OutOfMemoryException
Он отлично работает, только когда файл содержит много данных, я получаю OutOfMemoryException
. Вот код, который я использовал для сериализации моего объекта:
/// Serializes current EntityBase object into an XML document
/// </summary>
// <returns>string XML value</returns>
public virtual string Serialize() {
System.IO.StreamReader streamReader = null;
System.IO.MemoryStream memoryStream = null;
try {
memoryStream = new System.IO.MemoryStream();
Serializer.Serialize(memoryStream, this);
memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
streamReader = new System.IO.StreamReader(memoryStream);
return streamReader.ReadToEnd();
}
finally {
if (streamReader != null) {
streamReader.Dispose();
}
if (memoryStream != null) {
memoryStream.Dispose();
}
}
}
Мой запрос здесь, как я могу продлить буфер памяти, или как я могу избежать такого исключения?
С уважением.
Каков полный вывод 'ToString()' OutOfMemoryException', включая трассировку? У вас заканчивается память внутри 'Serializer.Serialize()' или внутри 'streamReader.ReadToEnd()'? – dbc
1) Что вы делаете с XML-строкой после ее создания? 2) Если вы закончили сериализацию памяти для строки для вывода в файл или другой поток, почему бы не сериализовать непосредственно в поток? – dbc
К сожалению, в последнее время авария происходит в streamReader.ReadToEnd(), фактически после сериализации объекта мне нужно получить строку xml, чтобы сохранить ее в базе данных, поэтому мне нужно использовать ReadToEnd() –