繁体   English   中英

将大文件(300MB)写入内存流时出现内存不足异常

[英]Out of memory exception when writing a large file (300MB) to memory stream

使用大文件的Http.Post时出现内存不足异常。 当我尝试将文件流数据写入内存流时遇到此异常。

显然,将300mb的数据放入内存会使CLR达到其最大的内存占用量。 您是否考虑过将文件写入其他类型的流,以避免同时将其全部存储在内存中? 也许您可以将文件直接写入磁盘,然后再对文件进行分块处理,而不是将整个内容同时加载到内存中。

上面的答案都不对我有用,这个答案就可以了:

http://blogs.msdn.com/b/johan/archive/2006/11/15/are-you-getting-outofmemoryexceptions-when-uploading-large-files.aspx

这些行是关键:

    HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(yourUri);
    wr.KeepAlive = false;
    wr.Timeout = System.Threading.Timeout.Infinite;
    wr.ProtocolVersion = HttpVersion.Version10;

和这里:

wr.AllowWriteStreamBuffering = false;

希望这可以帮助某人。

设置HttpWebRequest.AllowWriteStreamBuffering = false。 这将导致HWR立即发送数据,而不是将其缓冲在内存中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM