我将一些大型文件存储在博客存储容器中。
稍后,使用WebJob(也在Azure中),我使用Stream
从每个blob中读取,这给了我{{1}}。
我打开流并从中读取。 问题是,当文件大于25 MB aprox时,经过一段时间读取OK后,它会抛出此异常(在读取期间):
未处理的异常:System.Net.Http.HttpRequestException:同时出错 将内容复制到流中。 ---> System.ObjectDisposedException: 无法访问封闭的Stream。在System.IO .__ Error.StreamIsClosed() 在System.IO.MemoryStream.get_Position()处 System.Net.Http.StreamToStreamCopy.StartAsync()
似乎文件在另一边关闭了!
为什么会这样?有超时吗?我该如何处理这种情况?
答案 0 :(得分:1)
根据您的连接速度,您的响应可能会超时。这将支持您对约 25MB的文件的声明。使用BlobRequestOptions增加ServerTimeout
和/或MaximumExecutionTime
即可解决问题。
答案 1 :(得分:0)
我已经使用这些选项调用了OpenRead()方法,它似乎不再超时!
return block.OpenRead(null, new BlobRequestOptions()
{
ServerTimeout = TimeSpan.MaxValue,
RetryPolicy = new ExponentialRetry(TimeSpan.FromSeconds(5), 4),
MaximumExecutionTime = TimeSpan.FromHours(3)
});