【问题标题】:get a list of containers in the storage account获取存储帐户中的容器列表
【发布时间】:2019-06-27 17:49:48
【问题描述】:
用代码:
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
CloudConfigurationManager.GetSetting("<storageaccountname>_AzureStorageConnectionString"));
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference("test-blob-container");
我可以访问 Blob 容器“test-blob-container”。但是有没有办法获取存储帐户中的容器列表?
问候
斯蒂芬
【问题讨论】:
标签:
c#
asp.net
azure
azure-blob-storage
【解决方案1】:
.NET Core 库不支持ListContainers() 方法,这是设计使然,因为它不是异步方法,但您仍然可以利用ListContainersSegmentedAsync() 列出 .NET Core 库中的 blob 容器:
var blobClient = storageAccount.CreateCloudBlobClient();
var blobContainers = new List<CloudBlobContainer>();
BlobContinuationToken blobContinuationToken = null;
do
{
var containerSegment = await blobClient.ListContainersSegmentedAsync(blobContinuationToken);
blobContainers.AddRange(containerSegment.Results);
blobContinuationToken = containerSegment.ContinuationToken;
} while (blobContinuationToken != null);
与 REST API 一样,如果容器列表无法在一次 API 调用中完成,则返回分段结果和一个延续令牌。这就是为什么 ListContainersSegmentedAsync() 是 .NET Core 中唯一剩下的方法 - 它是真正的异步方法,相当于一次 REST API 调用。