强制 Etag 检查 Blob 创建

Forcing Etag check on Blob creation

有没有办法在第一次将数据上传到 blob 时(当 blob 不存在时)强制执行 Etag AccessCondition 检查?

我有多个不同的服务器在更新同一个 blob。 当 blob 已经存在时,在写入时强制执行 Etag AccessCondition 非常容易,而且效果很好。

我不能做的是在 blob 创建时强制执行 Etag 检查。

在这里找到了解决方法: https://social.msdn.microsoft.com/Forums/sqlserver/en-US/a02ff6ab-dceb-4955-908b-7e39137e4774/concurrent-upload-to-azure-blob-using-same-key?forum=windowsazuredata

所以基本上这里是需要的两个访问条件:

  1. 如果 blob 不存在使用:AccessCondition.GenerateIfNoneMatchCondition("*")
  2. 如果 blob 确实存在,请使用:AccessCondition.GenerateIfMatchCondition(_etag)

"*"(星号字符)是 Azure 使用的特殊通配符字符串。条件 #1 表示只要资源根本没有 Etag 值就应该执行操作(只有在资源不存在时才有可能)。