- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在尝试批量删除容器中的 blob 时,我遇到了非常奇怪的行为。具有以下代码(请注意,出于简洁和安全原因,省略或编辑了一些代码):
var blobServiceClient = GetAzureBlobServiceClient();
var container = await BuildAzureContainer(blobServiceClient);
var blobsToBeDeleted = new List<Uri>();
var thumbImage = removedMedia.Path.GetThumbImageName();
blobsToBeDeleted.Add(new Uri("https://account-name.blob.core.windows.net/container-name/blob-name"));
if (!string.IsNullOrEmpty(thumbImage))
{
blobsToBeDeleted.Add(new Uri("https://account-name.blob.core.windows.net/container-name/thumbs/blob-name"));
}
if (blobsToBeDeleted.Any())
{
var batch = blobServiceClient.GetBlobBatchClient();
await batch.DeleteBlobsAsync(blobsToBeDeleted, DeleteSnapshotsOption.IncludeSnapshots);
}
使用Azure.Storage.Blobs
(12.9.0) 和Azure.Storage.Blobs.Batch
(12.6.0)在我尝试执行批量删除之前,我将图像上传到 Azure 并确认它们已上传并存在于容器中。 Azure 的响应是:
System.AggregateException: 2 batch operation(s) failed. (The specified blob does not
exist.
RequestId: **removed**
Time:2021-06-18T08:16:15.2409894Z
Status: 404 (The specified blob does not exist.)
ErrorCode: BlobNotFound
还尝试使用以下方式获取 Uri:
container.GetBlobClient("blob-name").Uri
或
container.GetBlobClient("thumbs/blob-name}").Uri
它也返回正确的网址,但运气不佳。
我已经检查过,我添加到列表中的 URL 与 Azure 中的事件 URL 完全相同。无论我做什么,响应都是相同的 - 所有批处理操作都返回 BlobNotFound
。例如,如果对相同的 blob 执行以下操作:
BlobClient blob = container.GetBlobClient("container-name/blob-name");
await blob.DeleteAsync(DeleteSnapshotsOption.IncludeSnapshots);
该 blob 已成功删除。我真的很挣扎,无法找到导致这种行为的原因,特别是当我能够删除相同的 blob 但不能批量删除时。我是否遗漏了什么或者 SDK 发生了什么问题?决定在 GitHub 中打开新问题之前先写在这里。
任何帮助将不胜感激。
附注我确信这在几个月前是有效的,唯一改变的是 NuGet 包更新。
最佳答案
我自己做了一些测试,如果为 batch.DeleteBlobsAsync
指定 DeleteSnapshotsOption.IncludeSnapshots
来删除没有快照的 Blob,则会收到 404 错误。
所以恐怕你需要在批量删除 blob 之前检查它们是否有快照。
关于c# - Azure BlobBatchClient.DeleteBlobsAsync 始终返回 404 blob not found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68031928/
在尝试批量删除容器中的 blob 时,我遇到了非常奇怪的行为。具有以下代码(请注意,出于简洁和安全原因,省略或编辑了一些代码): var blobServiceClient = GetAzureBlo
我是一名优秀的程序员,十分优秀!