azure - 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 上看不到该方法。
有人可以解释为什么这不能按预期工作以及该怎么做吗?
解决方案
您可以使用以下代码来解决您的问题:
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);
推荐阅读
- java - 为什么 org.springframework.http.ResponseEntity 不实现 Serializable
- java - 如何在 try catch 异常中放置 if 语句?
- authentication - 在 GRANDstack 中设置用户级别授权
- asp.net-core - 对 API 的 PUT 请求将值设置为 NULL
- python - 如何使用递归查找列表中的最大数?
- python - 使用带有 keras 的预训练模型:AttributeError: 'NoneType' object has no attribute 'shape'
- java - 测试用例中的 Java Arguments.of():它是如何工作的?
- css - 如何在此 CSS 网格中将内容放置在标题的左侧和右侧?
- c# - 如何在docker的环境变量中设置对象数组
- javascript - 类型上不存在属性“平面”