Получение нулевого значения для последнего измененного свойства BLOB-объекта Azure

Я получаю нулевое значение, когда пытаюсь получить свойство LastModified BLOB-объекта Azure, ниже приведен фрагмент того же кода.

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

значение, полученное в блобе выше, не является CloudBlobDirectory. Заранее благодарю за любую помощь.

1 ответ

Решение

Причина, по которой вы получаете такое поведение, заключается в том, что когда вы выполняете следующую строку кода:

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;
Другие вопросы по тегам