Я написал действие для пользователя, чтобы загрузить созданный xml, не имея необходимости записывать его на серверный диск, но сохранить его в памяти.Множество неожиданных «nul» символов в конце xml с MemoryStream
Вот мой код:
public FileContentResult MyAction()
{
MemoryStream myStream = new MemoryStream();
XDocument xml = GenerateXml(...);
xml.Save(myStream);
myStream .Position = 0;
return File(myStream.GetBuffer(), "text/xml", "myFile.xml");
}
Все, кажется, работает хорошо, XML является правильным, я могу загрузить файл, но я не понимаю, почему у меня есть 691920 «» caracters последовательности нулевых в конце моего файла (число этих caracters, кажется, связана с длиной XML):
Откуда они пришли? Как я могу избавиться от них?
[Update] Я попытался это:
public FileContentResult MyAction()
{
XDocument xml = GenerateXml(...);
byte[] bytes = new byte[xml.ToString().Length * sizeof(char)];
Buffer.BlockCopy(xml.ToString().ToCharArray(), 0, bytes, 0, bytes.Length);
return File(bytes, "text/xml", "myFile.xml");
}
И я не получил "" символы последовательности нулевых. Поэтому я полагаю, что MemoryStream добавляет дополнительные символы в конце файла. Итак, в моем примере с вторым кодом моя проблема решена.
Но я также создаю документ Word, который я не могу прочитать (xxx.docx не может быть открыт, потому что есть проблемы с содержимым). Я полагаю, что у меня такая же проблема, поток памяти добавляет лишние символы в конце файла и повреждает его.