获取上次修改的 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;
}
对于那些使用较新版本 CloudBlockBlob
且 FetchAttributes
不存在的用户 - 请改用 DownloadAttributes
。
CloudBlockBlob blockBlob = container.GetBlockBlobReference(blob.ToString());
blockBlob.DownloadAttributes();
var timemodified = blockBlob.Properties.LastModified;
当我尝试获取 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;
}
对于那些使用较新版本 CloudBlockBlob
且 FetchAttributes
不存在的用户 - 请改用 DownloadAttributes
。
CloudBlockBlob blockBlob = container.GetBlockBlobReference(blob.ToString());
blockBlob.DownloadAttributes();
var timemodified = blockBlob.Properties.LastModified;