【发布时间】:2021-09-24 02:50:27
【问题描述】:
我可以使用 Azure.Storage.Blobs 12.9.1 上传包含西里尔字符的 blob,但无法使用 Azure.Storage.Blobs.Batch 12.6.0 批量删除它们。
考虑以下 blob 名称:здраве-и-красота-от-природатаjpg--xfgqfvhj.axp.webp 和代码:
var blobsToBeDeleted = new List<Uri>();
blobsToBeDeleted.Add(new Uri("azure-storage-address/container/здраве-и-красота-от-природатаjpg--xfgqfvhj.axp.webp"));
blobsToBeDeleted.Add(new Uri("azure-storage-address/container/thumbs/здраве-и-красота-от-природатаjpg--xfgqfvhj.axp.webp"));
await batchClient.DeleteBlobsAsync(blobsToBeDeleted);
在 Azure 上运行后,响应是:
Azure.RequestFailedException
{"Invalid response\r\nStatus: 202 (Accepted)\r\n\r\nHeaders:\r\nTransfer-Encoding: chunked\r\nServer: Windows-Azure-Blob/1.0,Microsoft-HTTPAPI/2.0\r\nx-ms-request-id: 9255671d-301e-008e-1a4a-797e59000000\r\nx-ms-version: 2020-08-04\r\nx-ms-client-request-id: ad39b21f-aad7-484e-8121-a707a318088e\r\nDate: Thu, 15 Jul 2021 07:24:29 GMT\r\nContent-Type: multipart/mixed; boundary=batchresponse_7c0d302a-8ee6-4d48-aac1-d973904338c3\r\n"} Azure.RequestFailedException
{"Expected 2 responses for the batch request, not 1."}
Status 202
其他名称结构同上,代码同上,但只包含拉丁字符的文件删除成功。
new Uri() 似乎可以正确转义字符,并且由于 BlobBatchClient.DeleteBlobsAsync 方法接受 IEnumerable<Uri> 我真的不明白问题出在哪里。
对此有什么想法吗?
编辑
这是一个已知问题,已经修复,将在下一个版本中发布 - https://github.com/Azure/azure-sdk-for-net/issues/22329
【问题讨论】:
-
好像是个bug,也许值得去github
-
是的,刚刚在 GitHub 中创建了一个新问题。留在这里供参考 - github.com/Azure/azure-sdk-for-net/issues/22671