Stream.CopyTo抛出System.OutOfMemoryException C#

时间:2017-11-29 19:04:22

标签: c#

我正在尝试将大型视频文件(250mb)加载到我的浏览器中。该文件很大,所以我试图一次加载一定数量的字节,但似乎问题出在其他地方,因为我尝试更改bufferSize而没有结果。

    MemoryStream ms = new MemoryStream();
    using (FileStream fs = File.Open(Server.MapPath(path), FileMode.Open))
    {
        fs.CopyTo(ms, 10000);
    }

CopyTo方法抛出异常。

提前致谢。

2 个答案:

答案 0 :(得分:3)

Steam.CopyTo不链接流以让他们按需复制数据,但会立即复制所有数据。

内存流旨在永久保存内存中的所有数据 - 即使临时副本缓冲区很小,这对于大文件也不总是一个好主意。

您可以尝试使用文件流本身,或者如果这会导致性能问题,BufferedStream可能会帮助您 - 只保留文件的某些部分在内存中。

答案 1 :(得分:1)

所以,我学到了宝贵的一课。在尝试加载较大的文件时,将应用程序平台目标设置为64位而不是32位。对于Visual Studio在工具>选项>项目和解决方案>中启动的IIS Express也是如此。网络项目。这解决了我的问题,也许它会帮助别人。我感谢大家的评论!