Получение нулевого значения для последнего измененного свойства 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;