无法通过BlobContainerClient读取含空文件夹前缀的Blob问题
问题:Azure Blob存储中含连续斜杠名称的Blob无法正常读取
我通过以下代码获取Blob:
var resultSegment = await blobContainer.GetBlobsAsync().AsPages(continuationToken, batchSize).FirstOrDefaultAsync();
遍历方式如下:
foreach (var blobItem in resultSegment.Values)
当处理名称为//somename(对应虚拟路径:[空文件夹]/[空文件夹]/somename)的Blob时,执行以下代码:
var blobClient = blobContainer.GetBlobClient(blobItem.Name); var exists = await blobClient.ExistsAsync(); var tags = await blobClient.GetTagsAsync();
得到exists == false的结果,且调用GetTagsAsync()时抛出RequestFailedException。不含连续斜杠前缀的Blob可正常读取。
我对此感到困惑,因为blobContainer.GetBlobClient仅接收Blob名称参数,而该名称直接来自GetBlobsAsync返回的BlobItem.Name。所有NuGet包均已更新至最新版本。
更新
尝试用Azure Storage Explorer创建测试数据排查时,发现该工具无法创建无名称的虚拟文件夹(提示“Name must not be empty.”),也不允许目录路径包含连续斜杠(提示“Directory path must not contain consecutive slashes.”)。看起来Azure官方不允许这种格式,但我已有大量含此类虚拟路径的Blob。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

