使用 .NET 列出 Blob 容器

通过代码列出 Azure 存储帐户中的容器时,可以指定多个选项来管理如何从 Azure 存储返回结果。 本文介绍如何使用适用于 .NET 的 Azure 存储客户端库列出容器。

了解容器列出选项

若要列出存储帐户中的容器,请调用以下方法之一:

这些方法的重载提供更多选项用于管理列出操作返回容器的方式。 后续部分将介绍这些选项。

管理要返回的结果数

默认情况下,列出操作每次最多返回 5000 个结果。 若要返回更小的结果集,请为要返回的结果页的大小提供非零值。

如果存储帐户包含 5000 个以上的容器,或者你指定了页面大小,以便列表操作返回存储帐户中的容器子集,则 Azure 存储将返回一个包含容器列表的延续令牌。 继续标记是一个不透明值,可用于从 Azure 存储中检索下一组结果。

在代码中检查延续令牌的值,以确定它是为空(适用于 .NET v12)还是为 NULL(适用于 .NET v11 及更低版本)。 如果继续标记为 null,则表示结果集是完整的。 如果延续令牌不为 NULL,则再次调用列出方法,并传入延续令牌以检索下一组结果,直到延续令牌为 NULL。

使用前缀筛选结果

若要筛选容器列表,请为 prefix 参数指定一个字符串。 前缀字符串可以包含一个或多个字符。 然后,Azure 存储只返回其名称以该前缀开头的容器。

返回元数据

若要将容器元数据与结果一起返回,请为 BlobContainerTraits 枚举(适用于 .NET v12)或 ContainerListingDetails 枚举(适用于 .NET v11 及更低版本)指定“Metadata”值)。 Azure 存储包含返回的每个容器的元数据,因此你也不需要提取容器元数据。

示例:列出容器

以下示例以异步方式列出存储帐户中以指定的前缀开头的容器。 该示例列出了以指定前缀开头的容器,并且每次对列表操作的调用均返回指定数量的结果。 然后,它使用延续令牌获取下一段结果。 该示例还会连同结果一起返回容器元数据。

async static Task ListContainers(BlobServiceClient blobServiceClient, 
                                string prefix, 
                                int? segmentSize)
{
    try
    {
        // Call the listing operation and enumerate the result segment.
        var resultSegment = 
            blobServiceClient.GetBlobContainersAsync(BlobContainerTraits.Metadata, prefix, default)
            .AsPages(default, segmentSize);

        await foreach (Azure.Page<BlobContainerItem> containerPage in resultSegment)
        {
            foreach (BlobContainerItem containerItem in containerPage.Values)
            {
                Console.WriteLine("Container name: {0}", containerItem.Name);
            }

            Console.WriteLine();
        }
    }
    catch (RequestFailedException e)
    {
        Console.WriteLine(e.Message);
        Console.ReadLine();
        throw;
    }
}

使用 .NET 进行开发的资源

下面的链接为使用适用于 .NET 的 Azure 存储客户端库的开发人员提供了有用的资源。

Azure 存储通用 API

Blob 存储 API

.NET 工具

请参阅