생성 된 XML을 서버 디스크에 쓰지 않고 메모리에 보관해야하는 작업을 사용자가 작성했습니다. 여기 MemoryStream이있는 xml의 끝에있는 예기치 않은 "nul"캐랙 터들
내 코드입니다 :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 "NUL"caracters을 왜 이해가 안 돼요
그들이에서 온 않습니다 내 파일의 (그 caracters의 수는 XML의 길이에 관련이있는 것으로 보인다)? 어떻게 그들을 제거 할 수 있습니까?
[업데이트]
나는이 시도 :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");
}
을 그리고는 "NUL"문자를하지 않았다. 그래서 나는 파일 끝에 여분의 캐랙 터를 추가하는 MemoryStream이라고 가정합니다. 내 예제에서 whith 두 번째 코드 내 문제가 해결되었습니다.
하지만 읽을 수없는 Word 문서도 생성합니다 (내용에 문제가 있기 때문에 xxx.docx를 열 수 없습니다). 나는 여기에서도 같은 문제가 있다고 가정한다. 메모리 스트림은 파일 끝에 여분의 캐랙 터를 추가하여 손상시킨다.