, я пытаюсь получить некоторую информацию о большом двоичном объекте Azure (дата и время последнего изменения в формате UTC). Эта информация хранится в свойстве CloudBlob.Properties.LastModifiedUtc.
Если я использую метод GetBlobReference() или GetBlockBlobReference(), свойства большого двоичного объекта не инициализируются (LastModifiedUtc — это DateTime.MinDate). Если я использую ListBlobs(), свойства инициализируются правильно (LastModifiedUtc имеет правильное значение).
Я делаю что-то неправильно при использовании функции GetBlobReference? Есть ли способ получить экземпляр CloudBlob только для одного конкретного блоба? Я знаю, что могу пропустить ListBlobs() и отфильтровать только интересующий меня большой двоичный объект или использовать ListBlobsWithPrefix() из класса CloudBlobClient, но я ожидаю получить все метаданные, когда запрашиваю конкретную ссылку на большой двоичный объект.
Код, показывающий, как я работаю с большими двоичными объектами Azure:
string storageAccountName = "test";
string storageAccountKey = @"testkey";
string blobUrl = "https://test.blob.core.windows.net";
string containerName = "testcontainer";
string blobName = "testbontainer";
var credentials = new StorageCredentialsAccountAndKey(storageAccountName, storageAccountKey);
var cloudBlobClient = new CloudBlobClient(blobUrl, credentials);
var containerReference = cloudBlobClient.GetContainerReference(string.Format("{0}/{1}", blobUrl, containerName));
// OK - Result is of type CloudBlockBlob, cloudBlob_ListBlobs.Properties.LastModifiedUtc > DateTime.MinValue
var cloudBlob_ListBlobs = containerReference.ListBlobs().Where(i => i is CloudBlob && ((CloudBlob)i).Name == blobName).FirstOrDefault() as CloudBlob;
// WRONG - Result is of type CloudBlob, cloudBlob_GetBlobReference.Properties.LastModifiedUtc == DateTime.MinValue
var cloudBlob_GetBlobReference = containerReference.GetBlobReference(string.Format("{0}/{1}/{2}", blobUrl, containerName, blobName));
// WRONG - Result is of type CloudBlockBlob, cloudBlob_GetBlockBlobReference.Properties.LastModifiedUtc == DateTime.MinValue
var cloudBlob_GetBlockBlobReference = containerReference.GetBlockBlobReference(string.Format("{0}/{1}/{2}", blobUrl, containerName, blobName));