Я следовал руководству Microsoft по маршрутизации в Azure IoT Hub, и теперь все мои сообщения из iot hub хранятся в больших двоичных объектах в контейнере. Однако каждый BLOB-объект находится в отдельной папке. Например, сообщения отправленные 3 ноября 2018 19:53 хранятся в
xyz / 00/2018/11/03/19/53 BLOB-файл. Как я могу получить все капли из всех папок в контейнере? Я не могу использовать CloudBlobContainer.ListBlobs (), потому что у меня нет этого метода. Я пробовал:
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(StorageConnectionString);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer blobContainer = blobClient.GetContainerReference(storageContainerName);
CloudBlob blob = blobContainer.GetBlockBlobReference("xyz/00/2018/11/03/20/15");
MemoryStream stream = new MemoryStream();
await blob.DownloadToStreamAsync(stream);
return Encoding.UTF8.GetString(stream.ToArray());
и этот код возвращает содержимое BLOB-объекта, расположенного в xyz / 00/2018/11/03/20/15
Однако, если я пытаюсь перебрать BLOB-объекты, используя приведенный ниже код, он возвращает только "https://{storageName}.blob.core.windows.net/{containerName}/{xyz}/"
List<string> blobs = new List<string>();
BlobResultSegment resultSegment = blobContainer.ListBlobsSegmentedAsync(null).Result;
foreach (IListBlobItem item in resultSegment.Results)
{
if (item.GetType() == typeof(CloudBlockBlob))
{
CloudBlockBlob blob = (CloudBlockBlob)item;
blobs.Add(blob.Name);
}
else if (item.GetType() == typeof(CloudPageBlob))
{
CloudPageBlob blob = (CloudPageBlob)item;
blobs.Add(blob.Name);
}
else if (item.GetType() == typeof(CloudBlobDirectory))
{
CloudBlobDirectory dir = (CloudBlobDirectory)item;
blobs.Add(dir.Uri.ToString());
}
}
var result = String.Join(", ", blobs.ToArray());
return result;
Что мне здесь не хватает? Как я могу получить каждый шарик из контейнера?