使用Azure.StorageServices.BlobService批量下载Blob时部分文件报403 Forbidden
Azure Blob批量下载时特定文件报403 Forbidden问题排查
- 问题现象:使用
Azure.StorageServices.BlobService批量下载Azure Storage Blob文件列表时,子文件夹下字母数字排序最靠前的文件会返回Response failed with status: 403 Forbidden。比如原本报错的是mono-2.0-bdwgc.dll,新增排序更靠前的alpha.txt后,报错对象变为alpha.txt。但其他文件夹下的部分文件可正常下载。 - 验证情况:所有文件均支持匿名访问,直接在浏览器打开文件URI可正常下载;若在程序启动时单独下载该问题文件,能成功完成,仅批量下载列表时触发报错。资源路径均使用正斜杠
/作为分隔符。 - 已尝试操作:跟进MSDN更新将
x-ms-version标头修改为2025-01-05,问题未解决。
代码精简片段
StorageServiceClient client = StorageServiceClient.Create(STORAGE_ACCOUNT, blobKey); blobService = client.GetBlobService(); // ... for (int i = 0; i < blobsToDownload.Count; i++) { await blobService.GetBlob(OnBlobReceived, blobsToDownload[i]); }
private async void OnBlobReceived(IRestResponse<byte[]> response) { if (response.IsError) { // 此处触发403 Forbidden错误 throw new Exception($"{(int)response.StatusCode} {response.ErrorMessage} {response.Url}"); } // ... }
更新
移除使用的Azure.StorageServices.BlobService 12.23.0包,改用官方Azure.Storage.Blobs(通过NuGet for Unity安装)后,问题解决。此前相同代码一周前仍可正常运行,暂未明确具体原因,但功能已恢复。
内容的提问来源于stack exchange,提问作者Marco Vincenzi
相关产品推荐
相关产品推荐

