如何使用BlobClient从Azure存储中删除Blob

时间:2020-06-30 21:24:00

标签: c# azure-storage-blobs

我正在尝试使用BlobClient class从Azure存储中删除多个blob。

private static void DeleteBlobsFromContainer(Uri blobUri, List<string> fileNames)
{
    foreach (var fileName in fileNames)
    {
        var uri = new Uri(blobUri, fileName);
        BlobClient blobClient = new BlobClient(uri);
        //blobClient.Delete(DeleteSnapshotsOption.IncludeSnapshots);
        blobClient.DeleteIfExists(DeleteSnapshotsOption.IncludeSnapshots);
    }
}

这是调试器中的外观:

My blobUri looks like

我可以使用相同的BlobClient类来下载/流式处理Blob。我不明白为什么BlobClient的与删除相关的方法不起作用。

我收到此消息:“ Azure.RequestFailedException:'指定的资源不存在。”

下面是我的Azure存储中的图片,其中显示了容器中的一些斑点。

enter image description here

注意:几个月前我才开始编程。预先感谢!

1 个答案:

答案 0 :(得分:2)

您应为Blob的uri指定一个SAS令牌。

代码如下:

var sasToken="your sastoken";
var uri = new Uri(blobUri, fileName+sastoken);

BlobClient blobClient = new BlobClient(uri); 
blobClient.DeleteIfExists(DeleteSnapshotsOption.IncludeSnapshots);

仅供参考:这是通过天蓝色门户网站生成sasToken的方法:

enter image description here