Я действительно новичок с потоками, поэтому я не знаю, что я здесь делаю. :)
У меня есть XElement
, содержащий XML. Я хочу вернуть его как файл пользователю.
XElement xml = IndicesXMLGenerator.XML();
//Code for creating a memorystream for returning to browser as file
MemoryStream stream = new MemoryStream();
XmlTextWriter writer = new XmlTextWriter(stream, System.Text.Encoding.Unicode);
xml.Save(writer);
writer.Close();
//Code for direct saving to harddisk
FileStream filestream = new FileStream(@"D:\indices.xml", FileMode.Create);
XmlTextWriter writer2 = new XmlTextWriter(filestream, System.Text.Encoding.Unicode);
xml.Save(writer2);
writer2.Close();
filestream.Close();
//Return memorystream as fileresult
return base.File(new MemoryStream(stream.GetBuffer()), "text/xml", "AlleIndices.xml");
}
Когда я открываю файл, полученный из браузера, он полностью искажен.
как: �< ? X M L
Когда я меняю кодировку в коде на UTF8
, это дает мне документ нормального вида, но в конце я получаю много символов 0x0
, которые делают документ недействительным.
Странно то, что XML-файл, который я сохранил непосредственно на жестком диске из кода:
- Отлично в кодировке
- Не содержит странных
0x0
символов
Итак, что здесь происходит? Почему я не могу легко передать свой XElement в браузер в виде файла?