使用Azure Storage SDK下载Blob时条件读取功能异常求助
Azure Storage SDK下载Blob时读取条件设置异常问题
我在使用Azure Storage SDK下载Blob时,遇到了读取条件设置不生效的问题。
操作流程
- 上传Blob(正常工作)
- 下载Blob(正常工作)
- 通过
blobRef.GetProperties().Etag获取Blob的Etag(正常工作) - 使用该Etag再次尝试下载Blob,期望触发
RequestFailedException异常且e.ErrorCode == ConditionNotMet(失败)
相关代码
var condition = new Azure.Storage.Blobs.Models.BlobRequestConditions { IfNoneMatch = new Azure.ETag(previousEtagString), }; //blobRef是Azure.Storage.Blobs.BlobClient的有效实例 //target为文件路径 blobRef.DownloadTo(target, conditions: condition); // 此处应抛出RequestFailedException
备注
- 对比步骤3获取的Etag(转换为字符串)与步骤4传入的Etag,结果显示两者一致:
blobRef.GetProperties().Etag == new Azure.Etag(blobRef.GetProperties().Etag.ToString())->true - 已在GitHub仓库提交相关问题
- 在v11版本中测试用例可正常运行:
var blobRef = _blobContainer.GetBlockBlobReference(identifier); blobRef.DownloadTo(target, AccessCondition.GenerateIfNoneMatchCondition(stringEtag)); //抛出StorageException
- 注意到第二次下载的Blob为空文件,无数据,而第一次下载的Blob有数据。读取条件是否仅部分生效但未抛出异常?
- 这肯定是一个Bug,已在GitHub仓库提交Issue

内容的提问来源于stack exchange,提问作者Luis Lavieri
相关产品推荐
相关产品推荐

