【问题标题】:failure deleting blobs from azure storage从 azure 存储中删除 blob 失败
【发布时间】:2018-11-18 19:19:52
【问题描述】:

我正在尝试从容器中删除 blob。 DeleteIfExits 返回 true 但没有任何反应。我使用 Azure 的门户检查容器,我仍然可以看到 blob。

我的代码有什么问题?

   private static void DeleteAllFilesWithSameName(String filePath, String filename, CloudBlobContainer container)
    {

        String filenameWidthoutExtension = Path.GetFileNameWithoutExtension(filename);

        try
        {
            IEnumerable<IListBlobItem> blobs = container.ListBlobs(filenameWidthoutExtension, true);


            if (blobs.Count<IListBlobItem>() > 0)
            {
                List<string> blobNames = blobs.OfType<CloudBlockBlob>().Select(b => b.Name).ToList();

                foreach (String blobName in blobNames)
                {
                    CloudBlockBlob blockBlob = container.GetBlockBlobReference(filename);

                    bool isDeleted = blockBlob.DeleteIfExists();

                }
            }
        }
        catch (Exception e)
        {
            Console.Write(e.Data);
        }


    }

【问题讨论】:

    标签: c# azure azure-storage


    【解决方案1】:

    我认为问题在于您的代码中的逻辑:

    CloudBlockBlob blockBlob = container.GetBlockBlobReference(filename);
    

    上面这行不应该是吗?

    CloudBlockBlob blockBlob = container.GetBlockBlobReference(blobName);
    

    请尝试将您的代码更改为:

                    foreach (String blobName in blobNames)
                    {
                        CloudBlockBlob blockBlob = container.GetBlockBlobReference(blobName);
    
                        bool isDeleted = blockBlob.DeleteIfExists();
    
                    }
    

    【讨论】:

    • 对不起。我不明白要改变什么。你能解释更多吗?谢谢。
    • 在创建 CloudBlockBlob 实例时,您在代码中使用了文件名变量。它应该是blobName。这是在循环中。
    猜你喜欢
    • 2021-11-02
    • 1970-01-01
    • 2020-04-09
    • 2014-07-20
    • 2021-11-20
    • 2015-10-10
    • 2015-09-23
    • 2016-06-13
    • 1970-01-01
    相关资源
    最近更新 更多