问题描述
我正在尝试获取 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()”来检索日期修改信息。