You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure BlobBatchClient.DeleteBlobsAsync调用始终返回404 BlobNotFound求助

Azure Blob批量删除返回BlobNotFound问题排查及解决方案

核心原因

你遇到的是Azure.Storage.Blobs.Batch 12.6.0版本的已知兼容性Bug,该版本在处理传入的完整Blob Uri时存在内部路径解析/编码错误,会错误识别Blob路径,即使传入Uri和实际Blob地址完全一致,也会返回BlobNotFound错误。该问题在12.7.0及更高版本中已被官方修复。

解决方案

方案1:升级依赖包(优先推荐)

直接将两个相关NuGet包升级到最新稳定版即可,无需修改原有业务代码:

  • Azure.Storage.Blobs 升级至12.10.0及以上版本
  • Azure.Storage.Blobs.Batch 升级至12.7.0及以上版本

方案2:无需升级包的临时替代方案

如果当前环境不方便升级依赖版本,可以改用手动构造批量请求的方式实现:

if (blobsToBeDeleted.Any())
{
    var batch = blobServiceClient.GetBlobBatchClient();
    foreach (var blobUri in blobsToBeDeleted)
    {
        var blobClient = new BlobClient(blobUri);
        batch.DeleteBlob(blobClient, DeleteSnapshotsOption.IncludeSnapshots);
    }
    await batch.SubmitBatchAsync();
}

额外注意事项

你提供的单独删除示例代码存在参数冗余问题:container.GetBlobClient方法只需传入Blob在当前容器内的相对路径即可,不需要重复携带容器名,正确写法如下:

BlobClient blob = container.GetBlobClient("blob-name");
await blob.DeleteAsync(DeleteSnapshotsOption.IncludeSnapshots);

如果你的存储账户开启了ADLS Gen2分层命名空间,也需要确保Azure.Storage.Blobs.Batch版本在12.7.0及以上,才能正常支持分层命名空间下的Blob批量删除操作。

内容的提问来源于stack exchange,提问作者Ivaylo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 11:15:04