Azure BlobStorage 流对大于 25 MB 的文件关闭

问题描述 投票:0回答:2

我正在博客存储容器中存储一些大文件。

后来,使用 WebJob(也在 Azure 中),我使用

CloudBlockBlob.OpenRead()
读取每个 blob,这给了我一个
Stream

我打开流并从中读取。 问题是,当文件大于 25 MB 左右时,在读取正常一段时间后,它会抛出此异常(在读取期间):

未处理的异常:System.Net.Http.HttpRequestException:错误 将内容复制到流。 ---> System.ObjectDisposeException: 无法访问关闭的流。在 System.IO.__Error.StreamIsClosed() 在 System.IO.MemoryStream.get_Position() 处 System.Net.Http.StreamToStreamCopy.StartAsync()

对方好像关闭了文件!

为什么会出现这种情况?有超时吗?我该如何处理这种情况?

c# .net azure azure-blob-storage c#-ziparchive
2个回答
3
投票

根据您的连接速度,您的响应可能会超时。这将支持您的说法,即它适用于about 25MB 的文件。使用

BlobRequestOptions
增加
ServerTimeout
和/或 MaximumExecutionTime 来解决。


0
投票

我已经使用这些选项调用了 OpenRead() 方法,看起来它不再超时!

return block.OpenRead(null, new BlobRequestOptions()
            {
                ServerTimeout = TimeSpan.MaxValue,
                RetryPolicy = new ExponentialRetry(TimeSpan.FromSeconds(5), 4),                
                MaximumExecutionTime = TimeSpan.FromHours(3)
            });
© www.soinside.com 2019 - 2024. All rights reserved.