【问题标题】:Getting null value for Azure blob last modified property获取 Azure blob 上次修改属性的空值
【发布时间】:2017-03-09 22:39:46
【问题描述】:

当我尝试获取 Azure Blob 的 LastModified 属性时,我得到 null,下面是相同的 sn-p。

CloudStorageAccount storageAccount = CloudStorageAccount.Parse("account");
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference("folder");
var blobs = container.ListBlobs();
foreach (var blob in blobs)
{
CloudBlockBlob blockBlob =container.GetBlockBlobReference(blob.ToString());
var timemodified = blockBlob.Properties.LastModified;
}

在上面 blob 中获取的值不是 CloudBlobDirectory。 提前感谢您的帮助。

【问题讨论】:

    标签: c# azure azure-blob-storage


    【解决方案1】:

    您出现这种行为的原因是当您执行以下代码行时:

    CloudBlockBlob blockBlob = container.GetBlockBlobReference(blob.ToString());
    

    它本质上创建了一个CloudBlockBlob 对象的新实例,并且它的属性被初始化为默认值。您需要为此调用 FetchAttributes 方法来填充属性。

    此外,当您列出 blob 时,也会获取 blob 的属性。所以你不需要创建CloudBlockBlob 的新实例。只需使用您获得的blob 对象作为列表结果并使用那里的属性。所以你的代码是:

            foreach (var blob in blobs)
            {
                var timemodified = blob.Properties.LastModified;
            }
    

    【讨论】:

    • 在 blockBlob.FetchAttributes() 上遇到异常
    • Microsoft.WindowsAzure.Storage.dll 中出现“Microsoft.WindowsAzure.Storage.StorageException”类型的异常,但未在用户代码中处理附加信息:远程服务器返回错误:(404)未找到。
    • 不使用blob.ToString(),而是找出blob的名称并使用它。假设你所有的 blob 都是BlockBlob 类型,你可以做类似container.GetBlockBlobReference((blob as CloudBlockBlob).Name) 的事情。 但是,请注意,当您调用 FetchAttributes 时,您是在向 Azure 存储发出请求,以获取您的 blob 对象中已经存在的信息。
    • 虽然,我不确定 blob 类型,因为它可能是任何 CloubBlockBlob 或 CloudBlobDirectory。我可以在我的代码中处理它感谢您的帮助。干杯:)
    • 如果你想要的只是 blob 列表(并确保你没有得到CloudBlobDirectory),你可以简单地做var blobs = container.ListBlobs(null, true)。这将确保您在列出 blob 时不会取回任何目录。
    【解决方案2】:

    对于那些使用较新版本的CloudBlockBlobFetchAttributes 不存在的用户,请改用DownloadAttributes

    CloudBlockBlob blockBlob = container.GetBlockBlobReference(blob.ToString());
    blockBlob.DownloadAttributes();
    var timemodified = blockBlob.Properties.LastModified;
    

    【讨论】:

      猜你喜欢
      • 2020-04-06
      • 2023-03-04
      • 1970-01-01
      • 2016-07-15
      • 1970-01-01
      • 2021-08-30
      • 1970-01-01
      • 2021-07-26
      • 2017-04-19
      相关资源
      最近更新 更多