'GetBlockBlobReference' 时,天蓝色块块属性为空

问题描述

我正在尝试获取 blockblob 的 LastModified 日期。

我发现块 blob 的方式与另一篇 stackoverflow 帖子中显示的方式相同: https://stackoverflow.com/a/60082240/2759759

        var cloudStorageAccount = CloudStorageAccount.Parse(variable);
        var cloudBlobClient = cloudStorageAccount.CreateCloudBlobClient();
        var cloudBlobContainer = cloudBlobClient.GetContainerReference(BlobContainerName);
        var cloudBlockBlob = cloudBlobContainer.GetBlockBlobReference(blobFile);
        var blobDateTime = cloudBlockBlob.Properties.LastModified; // returns null
        var cloudBlockBlob2 = cloudBlockBlob.CreateSnapshot();
        var blobDateTime2 = cloudBlockBlob2.Properties.LastModified; // returns desired date time information

当上面运行时,blobDateTime 将为空,blobDateTime2 将具有所需的信息。为什么我需要创建快照才能获取上次修改日期? 获取 LastModified 信息的成本最低的方法是什么。创建快照不是即时的,因此如果我只想要修改日期,它可能在后台做的事情比我需要做的要多。

解决方法

这是修复。我只需要添加 FetchAttributes() 代码行。

    var cloudStorageAccount = CloudStorageAccount.Parse(variable);
    var cloudBlobClient = cloudStorageAccount.CreateCloudBlobClient();
    var cloudBlobContainer = cloudBlobClient.GetContainerReference(BlobContainerName);
    var cloudBlockBlob = cloudBlobContainer.GetBlockBlobReference(blobFile);
    cloudBlockBlob.FetchAttributes();
    var blobDateTime = cloudBlockBlob.Properties.LastModified; // returns good date time information

我不明白为什么 Stack Overflow 中的其他示例都不需要添加“FetchAttributes()”来检索日期修改信息。