首页 > 解决方案 > Azure Blob 存储在创建新容器时引发异常。声称它已经存在,但它不存在

问题描述

我正在尝试使用下面的示例代码在 Azure 存储中创建一个 blob 容器。

        BlobServiceClient blobServiceClient = new BlobServiceClient(connectionString);
        var fileName = "quickstart" + Guid.NewGuid().ToString() + ".png";

        //Create a unique name for the container
        string containerName = "quickstartblobs" + Guid.NewGuid().ToString();

        BlobContainerClient containerClient = blobServiceClient.CreateBlobContainer(containerName); //Exception occurs here. 
        BlobClient blobClient = containerClient.GetBlobClient(fileName);

        var result = blobClient.Upload(ms);

尽管创建了一个明显不存在的新容器名称,但对 CreateBlobContainer() 的调用始终会在 Azure 中创建容器,然后引发异常,说明它已经存在。

'指定的容器已经存在。

在运行此代码之前,我在我的 Azure 环境中验证不存在任何容器。在寻找解决此问题的方法时,我看到了对 CreateIfNotExists() 方法的引用,但是我在 BlobServiceClient 上看不到该方法。

有人可以解释为什么这不能按预期工作以及该怎么做吗?

标签: azureazure-blob-storage

解决方案


您可以使用以下代码来解决您的问题:

        BlobServiceClient blobServiceClient = new BlobServiceClient(connectionString);
        var fileName = "quickstart" + Guid.NewGuid().ToString() + ".png";

        //Create a unique name for the container
        string containerName = "quickstartblobs" + Guid.NewGuid().ToString();

        BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(containerName);
        containerClient.CreateIfNotExists(); 
        BlobClient blobClient = containerClient.GetBlobClient(fileName);

        var result = blobClient.Upload(ms);

推荐阅读