【问题标题】:List items from blob container C# .net列出 Blob 容器 C# .net 中的项目
【发布时间】:2018-03-14 05:13:08
【问题描述】:

需要帮助,

试图获取存储在 blob-container 中的项目列表,但无法理解为什么会超时。

我得到的错误是: -

ReadTimeout '((System.IO.Stream)(swa.BaseStream)).ReadTimeout' 抛出类型为 'System.InvalidOperationException' int {System.InvalidOperationException}的异常

详细错误信息:

使用的代码来自:https://docs.microsoft.com/en-us/azure/storage/blobs/storage-dotnet-how-to-use-blobs

如下代码 - resultSegment 得到 Result count = 2327 但在 listblob.txt 上仅导出 - 2279 然后超时

namespace listblob
{
    class Program
    {

         static void Main(string[] args)
        {
            CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
            CloudConfigurationManager.GetSetting("StorageConnectionString"));

            CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
            CloudBlobContainer container = blobClient.GetContainerReference("containername");

            ListBlobsSegmentedInFlatListing(container).Wait();
        }

        async public static Task ListBlobsSegmentedInFlatListing(CloudBlobContainer container)
        {
            int i = 0;
            BlobContinuationToken continuationToken = null;
            BlobResultSegment resultSegment = null;
            string patha = @"C:\listblob.txt";
            StreamWriter swa = File.CreateText(patha);

            do
            {
                resultSegment = await container.ListBlobsSegmentedAsync("", true, BlobListingDetails.All, 10, continuationToken, null, null);
                if (resultSegment.Results.Count<IListBlobItem>() > 0) //{ Console.WriteLine("Page {0}:", ++i); }
                foreach (var blobItem in resultSegment.Results)
                {
                    //Console.WriteLine("\t{0}", blobItem.StorageUri.PrimaryUri);
                    swa.WriteLine(blobItem.Uri.Segments[2]);
                }
.
                continuationToken = resultSegment.ContinuationToken;
            }
            while (continuationToken != null);
        }

    }

}

【问题讨论】:

  • [![在此处输入图片描述][1]][1] [1]:i.stack.imgur.com/dCtiD.jpg
  • 我尝试运行您的代码,没有任何问题并且工作正常。您可以尝试将文件的路径从Drive c 更改为其他驱动器并检查吗?并发布问题。

标签: c# .net azure blob azure-blob-storage


【解决方案1】:

感谢 Thennarasan 的回复。我按照你的建议试过了,但结果没有改变。

但是我将所有内容复制到字符串列表并得到了预期的结果。

List<String> list = new List<String>();
list.Add(blobItem.Uri.Segments[2]);
System.IO.File.WriteAllLines("SavedLists.txt", list);

【讨论】:

    【解决方案2】:
    List<string> blobNames = list.OfType<CloudBlockBlob>().Select(b => b.Name).ToList();
    

    试试这个方法

    【讨论】:

    • 虽然这段代码 sn-p 可以解决问题,但它没有解释为什么或如何回答这个问题。请包括对您的代码的解释,因为这确实有助于提高您的帖子质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因
    猜你喜欢
    • 1970-01-01
    • 2018-06-10
    • 2015-12-19
    • 2021-04-24
    • 2022-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-18
    相关资源
    最近更新 更多