我写一些代码来检查斑点的LastModified属性。看来BLOB的属性是不可访问。我怎样才能做到这一点?
注意:当在Visual Studio调试,我可以看到我需要的信息。
下面是在哪里我想以后存储BLOB信息进行比较的代码段
if (blob is CloudBlockBlob)
{
var blobFileName = blob.Uri.Segments.Last().Replace("%20", " ");
var blobFilePath = blob.Uri.AbsolutePath.Replace(blob.Container.Uri.AbsolutePath + "/", "").Replace("%20", " ");
var blobPath = blobFilePath.Replace("/" + blobFileName, "");
var blobLM = blob.Properties.LastModified; // this is where I cannot access the LastModified poperty
blobInfos.Add(new BlobFileInfo
{
FileName = blobFileName,
BlobPath = blobPath,
BlobFilePath = blobFilePath,
Blob = blob,
LastModified = blobLM
});
}
请投下blob
为CloudBlockBlob
和应该解决您的问题。
例如:
if (blob is CloudBlockBlob)
{
var cloudBlockBlob = (CloudBlockBlob) blob;
var blobFileName = cloudBlockBlob.Uri.Segments.Last().Replace("%20", " ");
var blobFilePath = cloudBlockBlob.Uri.AbsolutePath.Replace(cloudBlockBlob.Container.Uri.AbsolutePath + "/", "").Replace("%20", " ");
var blobPath = blobFilePath.Replace("/" + blobFileName, "");
var blobLM = cloudBlockBlob.Properties.LastModified; // this is where I cannot access the LastModified poperty
blobInfos.Add(new BlobFileInfo
{
FileName = blobFileName,
BlobPath = blobPath,
BlobFilePath = blobFilePath,
Blob = cloudBlockBlob,
LastModified = blobLM
});
}
元数据和属性默认不加载,请参阅the docs:
对于存储资源中检索属性和元数据值是一个两步骤的过程。之前,你可以读取这些值,你必须明确地调用FetchAttributes或FetchAttributesAsync方法获取它们。唯一的例外是,如果您呼叫的存在,或在资源ExistsAsync方法。当调用这些方法之一,Azure存储调用覆盖下的适当FetchAttributes方法来Exists方法调用的一部分。
所以,执行访问属性之前像await blob.FetchAttributesAsync();
一个呼叫(或任何overloads的)。
还有一个非异步FetchAttributes如果需要的话。