【问题标题】:Deleting Blob from Azure storage using C#使用 C# 从 Azure 存储中删除 Blob
【发布时间】:2021-11-02 05:40:33
【问题描述】:

我正在使用的包是 Azure.Storage.Blobs (v12.9.1),我正在尝试删除一个 blob。

这是我写的代码(我没有收到任何错误):

//path - storage url without token 
public async Task<bool> DeleteFilefromStorage(string path)
{
        try
        {
            BlobServiceClient blobServiceClient = new BlobServiceClient(Helper.StorageCS);

            string containerName = Helper.ContainerName;

            Uri uri = new Uri(path);
            string filename = Path.GetFileName(uri.LocalPath);

            BlobContainerClient blobContainerClient = blobServiceClient.GetBlobContainerClient(containerName);

            var blob = blobContainerClient.GetBlobClient(filename);

            return await blob.DeleteIfExistsAsync();
        }
        catch
        {
            throw;
        }
    }

【问题讨论】:

  • 你有什么问题?
  • @GauravMantri 如何使用新的 Azure.Storage.Blobs(12.9.1) 包从容器中删除包含快照的 blob。
  • 您阅读过文档here吗?
  • 请编辑您的问题并在此处提供所有信息,而不是 cmetspath 变量的值是多少?还包括您遇到的问题。
  • 指定了什么是路径,我没有遇到任何问题,我没有收到错误,我的 blob 也没有被删除。

标签: azure azure-storage azure-blob-storage


【解决方案1】:

您的代码失败的原因是您的 blob URL 类似于 https://mystorage.blob.core.windows.net/mycontainer/files/ba143f66-ba18-478a-85d6-0d661e6894dd.xlsx,其中文件 (ba143f66-ba18-478a-85d6-0d661e6894dd.xlsx) 位于名为 files 的虚拟文件夹中。

但是,当您执行string filename = Path.GetFileName(uri.LocalPath); 时,它只会返回ba143f66-ba18-478a-85d6-0d661e6894dd.xlsx 而不会返回files/ba143f66-ba18-478a-85d6-0d661e6894dd.xlsx

因此,当您尝试删除文件时,您将收到 404 错误。由于DeleteIfExistsAsync 方法会吃掉404 (Not Found) 错误,因此您不会收到任何错误,但同时也不会删除blob(因为它不存在)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-20
    • 2020-03-12
    • 1970-01-01
    • 1970-01-01
    • 2020-04-09
    • 2013-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多