2015-01-03 6 views
0

Есть ли способ обеспечить проверку Etag AccessCondition, когда данные впервые загружаются в blob (когда blob не существует)?Принудительная проверка Etag на создание Blob

У меня есть несколько разных серверов, обновляющих один и тот же блокнот. Когда blob уже существует, очень легко обеспечить соблюдение Etag AccessCondition при записи, и это работает нормально.

То, что я не могу сделать, это принудительно проверить Etag на время создания blob.

  • Если я передаю string.Empty или null как Etag AccessCondition, когда я впервые создаю blob, тогда он свободен для всех режимов. В принципе, любой сервер, пытающийся записать в blob, всегда будет успешным, действительно ли он создал blob или просто удалил/перезаписал предыдущее содержимое blob.
  • Я не могу FetchProperties() несуществующего blob, очевидно, поэтому нет начального состояния Etag.
  • Передача любой непустой строки в виде Etag, когда Blob все еще не существует, всегда сбой при проверке предварительного условия.

ответ

0

Найдено решение этого здесь: 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. Если капля не существует использование: AccessCondition.GenerateIfNoneMatchCondition("*")
  2. Если капля делает есть использование: AccessCondition.GenerateIfMatchCondition(_etag)

«*» (символ звездочки) - это специальная подстановочная строка, используемая Azure. Условие # 1 говорит, что операция должна выполняться до тех пор, пока ресурс вообще не имеет значений Etag (что возможно только в том случае, если ресурс не существует).

Смежные вопросы