获取上次修改的 Azure blob 的空值 属性

Getting null value for Azure blob last modified property

当我尝试获取 Azure Blob 的 LastModified 属性 时,我得到 null,下面是同样的片段。

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。 在此先感谢您的帮助。

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

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

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

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

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

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

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