这发生在我的Azure存储模拟器上(尚未尝试真正的Azure存储)。我正在将文件保存到Blob存储。我对较小的文件没有任何问题(例如< = 107 MB)。但是,对于较大的文件(例如> = 114 MB),我可以无错误地上传文件,但在尝试下载时出现内存异常。
public Stream GetStream(string fileName)
{
var blob = GetCloudBlobContainer().GetBlockBlobReference(fileName);
if (blob.Exists())
{
Stream stream = new MemoryStream();
blob.DownloadToStream(stream);
return stream;
}
return null;
}
调用blob.DownloadToStream(stream)时抛出异常。
如何解决这个问题?
更新: 好的,我为我的案子找到了解决方法。而不是返回流,我可以使用blob.DownloadToFile()直接保存到本地文件(无论如何我需要它),这是正常工作。但是,我仍然有兴趣找到解决这个问题的方法。
答案 0 :(得分:2)
MemoryStream将所有数据存储在内存中。而且DownloadToFile适合您的事实意味着当您尝试将blob存储在内存中时,您的计算机可能会耗尽内存。 至于上传,如果直接从文件系统上的文件上传到blob,我们不会将整个文件加载到内存中,因此您不会遇到与下载相同的问题。
答案 1 :(得分:0)
除了上面的Vinay的回答,我还建议你交替打开" Performance" &安培; "流程" Windows任务管理器上的选项卡,用于在下载时监视内存使用情况