Chr*_*son 4 xml asp.net-mvc streaming
我认为 MVC 应该让这一切变得更容易,但我正在尝试各种方法并遇到问题。
如果我尝试接受这个问题的答案(相应地更改内容类型)...如何创建文件并通过 ASP.NET MVC 中的 FileResult 返回它?
...我遇到了麻烦,因为我在 xml 文件中的编码是 UTF-16。
我得到的错误是:
不支持从当前编码切换到指定编码。
这表明我需要在某个地方告诉 MVC 我想要 UTF-16。或者,我想要一种使用二进制而不是文本的不同方法。
这就是我已经解决的:
public FileStreamResult DownloadXML()
{
string name = "file.xml";
XmlDocument doc = getMyXML();
System.Text.Encoding enc = System.Text.Encoding.Unicode;
MemoryStream str = new MemoryStream(enc.GetBytes(doc.OuterXml));
return File(str, "text/xml", name);
}
Run Code Online (Sandbox Code Playgroud)
我认为这并不完美,我可能只使用 FileContentResult 而不必担心内存流。另外,我认为 IE 不喜欢 unicode。它抱怨“名称以无效字符开头”,尽管 xml 很好并且可以在 Firefox 中打开。
然而它似乎可以完成这项工作。