【发布时间】:2018-10-02 16:17:07
【问题描述】:
为了实现 Azure 存储 blob 的乐观并发,我正在基于 blob 属性中的 ETag 值构造 If-Match AccessCondition。
如果另一个进程更新了 blob,则 blob 服务应返回 HTTP 412(前提条件失败)状态消息。但是,该服务总是返回此 412 状态。
对于此示例,我使用存储资源管理器手动查找了 ETag 值。
重现问题的最小 sn-p 是:
var storage = CloudStorageAccount.Parse(connectionString);
var blobClient = storage.CreateCloudBlobClient();
var container = blobClient.GetContainerReference("foo");
var blob = container.GetBlockBlobReference("foo/1");
await blob.UploadTextAsync(
"test",
Encoding.UTF8,
AccessCondition.GenerateIfMatchCondition("\"0x1A52537587A1234\""),
new BlobRequestOptions(),
null);
【问题讨论】: