使用 C# 从 Azure 存储中删除 Blob

Deleting Blob from Azure storage using C#

我正在使用的包是 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;
        }
    }

您的代码失败的原因是因为您的 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); 时,它只会 return ba143f66-ba18-478a-85d6-0d661e6894dd.xlsx 而不会 files/ba143f66-ba18-478a-85d6-0d661e6894dd.xlsx

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