gpt4 book ai didi

c# - 强制 Etag 检查 Blob 创建

转载 作者:行者123 更新时间:2023-12-02 07:13:58 25 4
gpt4 key购买 nike

是否可以在第一次将数据上传到 blob 时(当 blob 不存在时)强制执行 Etag AccessCondition 检查?

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

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

  • 如果我在第一次创建 blob 时传递 string.Empty 或 null 作为 Etag AccessCondition,则它对所有模式都是免费的。基本上,任何尝试写入 blob 的服务器总是会成功,无论它实际创建了 blob 还是只是删除/覆盖了 blob 的先前内容。
  • 我显然无法 FetchProperties() 不存在的 blob,因此没有初始状态 Etag。
  • 当 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

所以基本上这是所需的两个 AccessConditions:

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

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

关于c# - 强制 Etag 检查 Blob 创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27756853/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com