C# 从MVC操作返回数据和文件

C# 从MVC操作返回数据和文件,c#,asp.net-mvc,C#,Asp.net Mvc,我有一个MVC GET操作,它返回一个带有byte[]属性的json类模型,我使用它返回消息和文件,但是如果文件太大,我会得到一个OutOfMemoryException,有没有其他方法返回不使用这种内存的文件和数据? 我知道我可以创建另一个操作来只返回最终文件,但是我可以在同一个请求上执行吗? 编辑: 我不想使用byte[]或任何将文件加载到内存中的方法 public ActionResult GetFile() { // Here: currently logic to crea

我有一个MVC GET操作,它返回一个带有byte[]属性的json类模型,我使用它返回消息和文件,但是如果文件太大,我会得到一个OutOfMemoryException,有没有其他方法返回不使用这种内存的文件和数据?
我知道我可以创建另一个操作来只返回最终文件,但是我可以在同一个请求上执行吗? 编辑: 我不想使用byte[]或任何将文件加载到内存中的方法

 public ActionResult GetFile()
 {
    // Here: currently logic to create the final file and the message

    // Here: I want to add the final file to the result
    // Here: I want to add my model data(json) to the result

    // Here: currently returning json with a byte[] property to return the file
    return Json(myModel, JsonRequestBehavior.AllowGet);
 }

根据您的限制,您可以做一些棘手的事情,如果您能够在主机上上载文件,您可以在JSON结果中返回上载文件的URL,然后让用户下载它


此外,您可以发现此链接很有用。

根据您的限制,您可以做一些棘手的事情,如果您能够在主机上上载文件,您可以在JSON结果中返回上载文件的URL,然后让用户下载


此外,您可以发现此链接很有帮助。

()或者研究将文件压缩为.zipIt的已压缩文件可能需要增加最大json长度属性问题是,我不想使用缓冲,比如使用byte[]或string,唯一的方法是使用stream,但是我不知道如何使用它,所以你不想使用字节数组?还是你呢?因为你的帖子让人觉得你想使用byte array()或者考虑将文件压缩成.zipIt已经压缩的文件,你可能需要增加最大json长度属性问题是,我不想使用缓冲,比如使用byte[]或string,唯一的方法是使用stream,但是我不知道如何使用它,所以你不想使用字节数组?还是你呢?因为你的帖子听起来像是你想使用字节数组,我想multipart可以解决它,但我在MVCI中找不到任何关于返回它的信息。我对下载场景中的multipart没有任何线索。但是我认为你必须把你的机制改成最安全的解决方案。我认为multipart可以解决它,但是我在MVCI中找不到任何关于返回它的信息。我不知道下载场景中的multipart。但我认为你必须改变你的机制,找到最安全的解决方案。