Azure BlobWriteStream 客户端无法在指定的超时时间内完成操作

Mir*_*lad 5 c# azure azure-storage azure-storage-blobs

我正在尝试将 300GB(流式)数据上传到 Azure blob 存储。我用来执行上传的代码如下所示:

var stream = blob.OpenWrite();
[...]
// the buffer is filled in with 128KB chunks of data from a larger 300GB file
stream.Write(buffer, offset, count);
Run Code Online (Sandbox Code Playgroud)

上传大约 8 小时后,我收到以下错误消息:

在 Microsoft.WindowsAzure.Storage.Core.Util.StorageAsyncResult`1.End() in c:\Program Files x86)\Jenkins\workspace\release_dotnet_master\Lib\ClassLibraryCommon\Core\Util\StorageAsyncResult.cs:Microsoft 的第 77 行。 WindowsAzure.Storage.Blob.BlobWriteStream.EndWrite(IAsyncResult asyncResult) in c:\Program Files (x86)\Jenkins\workspace\release_dotnet_master\Lib\ClassLibraryCommon\Blob\BlobWriteStream.cs:line 211

ErrorMessage = 客户端无法在指定的超时时间内完成操作。

作为旁注,我的上传速度约为 2MB/s(可能与超时消息有关)。任何帮助,将不胜感激。

Mir*_*lad 3

这个问题已经在8.1.3版本中得到解决(之前我使用的是8.1.1)。他们的变更日志中也提到了这一变化:

  • Blobs(桌面):修复了不遵守 MaximumExecutionTime 的错误,如果由于故障(例如,收到响应标头后出现网络故障),服务器停止发送部分响应,则会导致无限等待。
  • 所有(桌面):修复了重试、取消和表操作期间未释放 SendStream 的内存泄漏问题。

基本上,在8.1.3之前,BlobRequestOptions.MaximumExecutionTime被忽略。