Varun Bajpai
Varun Bajpai

Reputation: 555

Getting null value for Azure blob last modified property

I'm getting null when I'm trying to fetch LastModified property of Azure Blob, below is the snippet for the same.

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;
}

value fetched in blob above is not a CloudBlobDirectory. Thanks in advance for any help.

Upvotes: 3

Views: 4300

Answers (2)

basecode
basecode

Reputation: 1510

For those who use a newer version of CloudBlockBlob and FetchAttributes does not exist – use DownloadAttributes instead.

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

Upvotes: 2

Gaurav Mantri
Gaurav Mantri

Reputation: 136196

Reason you're getting this behavior is because when you execute following line of code:

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

It essentially creates a new instance of CloudBlockBlob object and it's properties are initialized to the default value. You would need to call FetchAttributes method on this to fill the properties.

Also, when you list the blobs the properties of the blob are fetched as well. So you need not create a new instance of CloudBlockBlob. Simply use the blob object you got as listing result and use the properties from there. So your code would be:

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

Upvotes: 7

Related Questions