C# 获取Azure blob上次修改属性的空值
当我试图获取Azure Blob的LastModified属性时,我得到了null,下面是相同的代码片段 在上面的blob中获取的值不是CloudBlobDirectory。C# 获取Azure blob上次修改属性的空值,c#,azure,azure-storage-blobs,C#,Azure,Azure Storage Blobs,当我试图获取Azure Blob的LastModified属性时,我得到了null,下面是相同的代码片段 在上面的blob中获取的值不是CloudBlobDirectory。 提前感谢您的帮助。您之所以会出现这种行为,是因为当您执行以下代码行时: CloudBlockBlob blockBlob = container.GetBlockBlobReference(blob.ToString()); 它实质上创建了CloudBlockBlob对象的一个新实例,并将其属性初始化为默认值。您需要对此
提前感谢您的帮助。您之所以会出现这种行为,是因为当您执行以下代码行时:
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;
获取blockBlob.FetchAttributes()上的以下异常Microsoft.WindowsAzure.Storage.StorageException类型的异常发生在Microsoft.WindowsAzure.Storage.dll中,但未在用户代码中处理其他信息:远程服务器返回错误:(404)未找到。未使用
blob.ToString()
,而是使用,找出blob的名字并使用它。假设所有blob的类型都是BlockBlob
,您可以执行类似于container.getblockblobbreference((blob作为CloudBlockBlob.Name)
的操作。但是,请注意,当您调用FetchAttributes
时,您正在向Azure存储请求获取blob
对象中已有的信息。尽管如此,我不确定blob类型,因为它可能是任何CloubBlockBlob或CloudBlobDirectory。我可以在我的代码中处理它谢谢你的帮助。干杯:)如果您想要的只是blob列表(并且确保您没有得到CloudBlobDirectory
),您只需执行var blobs=container.ListBlobs(null,true)
。这将确保在列出blob时不会返回任何目录。
CloudBlockBlob blockBlob = container.GetBlockBlobReference(blob.ToString());
blockBlob.DownloadAttributes();
var timemodified = blockBlob.Properties.LastModified;