【问题标题】:OperationContext usage (Microsoft.WindowsAzure.Storage)OperationContext 使用 (Microsoft.WindowsAzure.Storage)
【发布时间】:2021-08-13 10:25:34
【问题描述】:

我要从 Azure Blob 存储下载 blob 以进行流式传输,我需要指定重试策略和超时。这就是我使用 BlobRequestOptions(WindowsAzure.Storage NuGet 包)实例来指定所有这些设置的原因。我还想使用异步方法DownloadToStreamAsync,它需要传递一些额外的参数(AccessCondition、OperationContext)。我的代码:

var selfieBlob = new CloudBlockBlob(GetBlobUri(requestedUrl), _credentials);
await selfieBlob.DownloadToStreamAsync(
    targetStream,
    AccessCondition.GenerateEmptyCondition(),
    _blobOptions,
    new OperationContext());

问题:

  • 是否应该每次都创建一个新的 OperationContext 实例?
  • 为什么它是此方法的必需参数?看来我不明白为什么这么有必要。

【问题讨论】:

    标签: c# .net azure-blob-storage


    【解决方案1】:

    您可以使用default(OperationContext) 调用方法DownloadToStreamAsync。这与DownloadToStreamAsync 的其他重载相同。检查here

    await selfieBlob.DownloadToStreamAsync(
        targetStream,
        default(AccessCondition),
        _blobOptions,
        default(OperationContext));
    

    它通常用于记录相关性。检查ExcecuteAsync方法实现here

    【讨论】:

      【解决方案2】:

      关于OperationContext参数,@user1672994的回答是对的。

      参考CloudBlob.DownloadToStreamAsync Method's description,你就知道为什么需要AccessCondition这个参数了。如果没有条件限制,可以设置为null

      【讨论】:

        猜你喜欢
        • 2012-11-18
        • 1970-01-01
        • 2013-01-13
        • 2021-01-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-24
        相关资源
        最近更新 更多