You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ListBlobs不可用及ListBlobsSegmentedAsync未返回全部Blob目录问题

解决Azure Blob存储的ListBlobs方法找不到和ListBlobsSegmentedAsync返回不完整的问题

问题1:找不到ListBlobs方法,编译不通过

在WindowsAzure.Storage 8.0和.NET Core 1.1环境下,CloudBlobContainer确实提供了同步的ListBlobs方法,你可以从这几个方向排查问题:

  • 确认命名空间引用:务必在代码顶部添加using Microsoft.WindowsAzure.Storage.Blob;,Blob相关的核心类型和方法都在这个命名空间下。
  • 检查变量类型:确保你的blobs变量是CloudBlobContainer类型,而不是CloudBlobClient或其他类型。比如要先通过客户端正确获取容器实例:
    CloudStorageAccount storageAccount = CloudStorageAccount.Parse(yourConnectionString);
    CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
    CloudBlobContainer container = blobClient.GetContainerReference("level1");
    
    只有CloudBlobContainer实例才会包含ListBlobs方法。
  • 同步API的兼容性:.NET Core 1.1对部分Azure存储同步API的支持有限,虽然WindowsAzure.Storage 8.0理论上兼容,但更推荐使用异步版本(也就是你尝试的ListBlobsSegmentedAsync),同步方法可能存在隐藏的兼容性问题。如果坚持用同步方法,要确保WindowsAzure.Storage NuGet包是8.0.x的稳定版本。

问题2:ListBlobsSegmentedAsync仅返回10个结果

这是因为ListBlobsSegmentedAsync是分段获取结果的机制:单次调用只会返回一部分数据(即使你指定了maxResults=20000,Azure Blob服务的最大单次返回数量是5000,超过会自动截断;如果当前页结果更少,就返回实际数量),同时会返回一个ContinuationToken,用于获取下一页的数据。你只调用了一次,所以只拿到了第一页的10个结果。

正确的做法是循环调用直到ContinuationToken为null,示例代码如下:

BlobContinuationToken continuationToken = null;
List<IListBlobItem> allItems = new List<IListBlobItem>();

do
{
    // 调用分段获取方法,maxResults设为5000(服务允许的最大值)
    var segmentResult = await blobs.ListBlobsSegmentedAsync(
        false, 
        BlobListingDetails.None, 
        5000, 
        continuationToken, 
        null, 
        null);
    // 将当前页结果加入总列表
    allItems.AddRange(segmentResult.Results);
    // 更新续令牌,用于下一次循环
    continuationToken = segmentResult.ContinuationToken;
} while (continuationToken != null); // 续令牌为空时,说明所有数据已获取完毕

额外提醒:

  • 第一个参数useFlatBlobListing设为false时,只会列出当前层级的内容(符合你获取level21下子文件夹的需求);设为true会递归列出所有层级的Blob和文件夹。
  • 确保容器和目标路径的权限配置正确,避免因权限问题导致内容无法被列出。

内容的提问来源于stack exchange,提问作者Luke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:47:02