Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取Azure blob上次修改属性的空值_C#_Azure_Azure Storage Blobs - Fatal编程技术网

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

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对象的一个新实例,并将其属性初始化为默认值。您需要对此

当我试图获取Azure Blob的LastModified属性时,我得到了null,下面是相同的代码片段

在上面的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;

获取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;