如何将内存中的 xml 文档作为附件传输到 asp.net mvc 站点上

Chr*_*son 4 xml asp.net-mvc streaming

我认为 MVC 应该让这一切变得更容易,但我正在尝试各种方法并遇到问题。

如果我尝试接受这个问题的答案(相应地更改内容类型)...如何创建文件并通过 ASP.NET MVC 中的 FileResult 返回它?

...我遇到了麻烦,因为我在 xml 文件中的编码是 UTF-16。

我得到的错误是:

不支持从当前编码切换到指定编码。

这表明我需要在某个地方告诉 MVC 我想要 UTF-16。或者,我想要一种使用二进制而不是文本的不同方法。

Chr*_*son 6

这就是我已经解决的:

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 中打开。

然而它似乎可以完成这项工作。