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

时间:2016-10-27 09:45:22

标签: c# azure azure-storage-blobs

我正在尝试获取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。 提前感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

您获得此行为的原因是,当您执行以下代码行时:

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

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

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

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

答案 1 :(得分:0)

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

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