Aracılığıyla paylaş


Blob hizmeti işlemleri için koşullu üst bilgileri belirtme

Çeşitli Blob hizmeti işlemleri koşullu üst bilgilerin kullanımını destekler. Yalnızca belirtilen bir koşul karşılandığında bir işlemi gerçekleştirmek için koşullu üst bilgiler belirtebilirsiniz.

Blob hizmeti, koşullu üst bilgiler için HTTP/1.1 protokol belirtimini izler.

Desteklenen Koşullu Üst Bilgiler

Desteklenen koşullu üst bilgiler aşağıdaki tabloda açıklanmıştır.

Koşullu üst bilgi Description
If-Modified-Since Bir DateTime değer. Tarih biçimi RFC 1123'e göredir. Daha fazla bilgi için bkz. Üst bilgilerde tarih-saat değerlerinin gösterimi. İşlemi yalnızca kaynak belirtilen süreden sonra değiştirilmişse gerçekleştirmek için bu üst bilgiyi belirtin.
If-Unmodified-Since Bir DateTime değer. Tarih biçimi RFC 1123'e göredir. Daha fazla bilgi için bkz. Üst bilgilerde tarih-saat değerlerinin gösterimi. İşlemi yalnızca kaynak belirtilen tarih/saatten sonra değiştirilmemişse gerçekleştirmek için bu üst bilgiyi belirtin.
If-Match ETag değeri. İşlemi yalnızca kaynağın ETag değeri belirtilen değerle eşleşiyorsa gerçekleştirmek için bu üst bilgiyi belirtin. 2011-08-18 ve daha yeni sürümler için ETag tırnak içinde belirtilebilir.
If-None-Match ETag değeri veya joker karakter (*). yalnızca kaynağın ETag değeri belirtilen değerle eşleşmiyorsa işlemi gerçekleştirmek için bu üst bilgiyi belirtin. 2011-08-18 ve daha yeni sürümler için ETag tırnak içinde belirtilebilir.

İşlemi yalnızca kaynak yoksa gerçekleştirmek için joker karakteri (*) belirtin ve varsa işlemi başarısız yapın.

Sürüm 2013-08-15 veya Sonraki Sürümlerde Blob Hizmeti Okuma İşlemleri için Koşullu Üst Bilgiler Belirtme

2013-08-15 sürümünden itibaren Blob Alma ve Blob Özelliklerini Alma işlemleri birden çok koşullu üst bilgiyi destekler. Desteklenen koşullu üst bilgilerin herhangi bir bileşimini belirtebilirsiniz. Blob hizmeti bu koşulları aşağıdaki ifadeye göre değerlendirir:

If-Match && If-Unmodified-Since && (If-None-Match || If-Modified-Since)

ve If-None-Matchiçin If-Match birden çok virgülle ayrılmış değer de sağlayabilirsiniz. için If-Matchbirden çok değer belirtirseniz, Blob hizmeti ifadenin tamamını değerlendirmeden önce sağlanan tüm değerler üzerinde mantıksal OR bir işlem gerçekleştirir. için if-None-Matchbirden çok değer belirtirseniz, hizmet ifadenin tamamını değerlendirmeden önce mantıksal AND bir işlem gerçekleştirir. ve için If-Modified-SinceIf-Unmodified-Since birden çok değer belirtilmesi desteklenmez ve hata kodu 400 (Bad Request ile sonuçlanır.

Bu özellik , HTTP/1.1 belirtimine uymak ve Content Delivery Network (CDN) veya ara sunucunun bir denetim isteğine ek koşullu üst bilgiler eklediği senaryoları karşılamak için etkinleştirilir. Aşağıda, koşullu üst bilgilerin farklı bileşimlerinin bazı örnekleri verilmiştir.

Örnek 1:

ve If-Modified-Since üst bilgilerini içeren If-Match bir Get Blob isteği düşünün. Aşağıdaki tabloda, üst bilgilerin ayrı ayrı değerlendirilip değerlendirilmediğini belirten sonuç ve birlikte değerlendirilirse sonuç gösterilir.

Koşullu üst bilgiler Tek tek değerlendirilirse sonuç Birlikte değerlendirilirse sonuç
If-Match 412 (Önkoşul Başarısız Oldu) 412 (Önkoşul Başarısız Oldu)
If-Modified-Since 200 (Tamam) 412 (Önkoşul Başarısız Oldu)
If-Match 412 (Önkoşul Başarısız Oldu) 412 (Önkoşul Başarısız Oldu)
If-Modified-Since 304 (Değiştirilmedi) 412 (Önkoşul Başarısız Oldu)
If-Match 200 (Tamam) 200 (Tamam)
If-Modified-Since 200 (Tamam) 200 (Tamam)
If-Match 200 (Tamam) 304 (Değiştirilmedi)
If-Modified-Since 304 (Değiştirilmedi) 304 (Değiştirilmedi)

Örnek 2:

ve If-Modified-Since üst bilgilerini içeren If-None-Match bir isteği göz önünde bulundurun.

Koşullu üst bilgiler Tek tek değerlendirilirse sonuç Birlikte değerlendirilirse sonuç
If-None-Match 304 (Değiştirilmedi) 200 (Tamam)
If-Modified-Since 200 (Tamam) 200 (Tamam)
If-None-Match 200 (Tamam) 200 (Tamam)
If-Modified-Since 200 (Tamam) 200 (Tamam)
If-None-Match 200 (Tamam) 200 (Tamam)
If-Modified-Since 304 (Değiştirilmedi) 200 (Tamam)
If-None-Match 304 (Değiştirilmedi) 304 (Değiştirilmedi)
If-Modified-Since 304 (Değiştirilmedi) 304 (Değiştirilmedi)

Örnek 3:

ve If-MatchIf-Unmodified-Since üst bilgilerini içeren If-Modified-Sincebir isteği göz önünde bulundurun.

Koşullu üst bilgiler Tek tek değerlendirilirse sonuç Birlikte değerlendirilirse sonuç
If-Modified-Since 200 (Tamam) 412 (Önkoşul Başarısız Oldu)
If-Match 412 (Önkoşul Başarısız Oldu) 412 (Önkoşul Başarısız Oldu)
If-Unmodified-Since 200 (Tamam) 412 (Önkoşul Başarısız Oldu)
If-Modified-Since 200 (Tamam) 412 (Önkoşul Başarısız Oldu)
If-Match 200 (Tamam) 412 (Önkoşul Başarısız Oldu)
If-Unmodified-Since 412 (Önkoşul Başarısız Oldu) 412 (Önkoşul Başarısız Oldu)
If-Modified-Since 304 (Değiştirilmedi) 412 (Önkoşul Başarısız Oldu)
If-Match 200 (Tamam) 412 (Önkoşul Başarısız Oldu)
If-Unmodified-Since 412 (Önkoşul Başarısız Oldu) 412 (Önkoşul Başarısız Oldu)
If-Modified-Since 304 (Değiştirilmedi) 304 (Değiştirilmedi)
If-Match 200 (Tamam) 304 (Değiştirilmedi)
If-Unmodified-Since 200 (Tamam) 304 (Değiştirilmedi)

Örnek 4:

, If-None-MatchIf-Unmodified-Since ve If-Match üst bilgilerini içeren If-Modified-Sincebir isteği göz önünde bulundurun.

Kombinasyon Tek tek http durum kodu Blob durum sonucunu alma
If-Modified-Since 200 (Tamam) 200 (Tamam)
If-None-Match 200 (Tamam) 200 (Tamam)
If-Unmodified-Since 200 (Tamam) 200 (Tamam)
If-Match 200 (Tamam) 200 (Tamam)
If-Modified-Since 200 (Tamam) 412 (Önkoşul Başarısız Oldu)
If-None-Match 304 (Değiştirilmedi) 412 (Önkoşul Başarısız Oldu)
If-Unmodified-Since 412 (Önkoşul Başarısız Oldu) 412 (Önkoşul Başarısız Oldu)
If-Match 200 (Tamam) 412 (Önkoşul Başarısız Oldu)
If-Modified-Since 200 (Tamam) 200 (Tamam)
If-None-Match 304 (Değiştirilmedi) 200 (Tamam)
If-Unmodified-Since 200 (Tamam) 200 (Tamam)
If-Match 200 (Tamam) 200 (Tamam)
If-Modified-Since 304 (Değiştirilmedi) 412 (Önkoşul Başarısız Oldu)
If-None-Match 200 (Tamam) 412 (Önkoşul Başarısız Oldu)
If-Unmodified-Since 200 (Tamam) 412 (Önkoşul Başarısız Oldu)
If-Match 412 (Önkoşul Başarısız Oldu) 412 (Önkoşul Başarısız Oldu)
If-Modified-Since 304 (Değiştirilmedi) 412 (Önkoşul Başarısız Oldu)
If-None-Match 200 (Tamam) 412 (Önkoşul Başarısız Oldu)
If-Unmodified-Since 412 (Önkoşul Başarısız Oldu) 412 (Önkoşul Başarısız Oldu)
If-Match 412 (Önkoşul Başarısız Oldu) 412 (Önkoşul Başarısız Oldu)
If-Modified-Since 304 (Değiştirilmedi) 200 (Tamam)
If-None-Match 200 (Tamam) 200 (Tamam)
If-Unmodified-Since 200 (Tamam) 200 (Tamam)
If-Match 200 (Tamam) 200 (Tamam)
If-Modified-Since 304 (Değiştirilmedi) 412 (Önkoşul Başarısız Oldu)
If-None-Match 304 (Değiştirilmedi) 412 (Önkoşul Başarısız Oldu)
If-Unmodified-Since 412 (Önkoşul Başarısız Oldu) 412 (Önkoşul Başarısız Oldu)
If-Match 200 (Tamam) 412 (Önkoşul Başarısız Oldu)

2013-08-15 Öncesi Sürümlerde Okuma İşlemleri ve Yazma İşlemleri için Koşullu Üst Bilgiler Belirtme (Tüm Sürümler)

2013-08-15 öncesi sürümlerle Blob hizmeti okuma işlemlerini (Blob Alma ve Blob Özelliklerini Alma) çağırırken ve sürümden bağımsız olarak herhangi bir yazma işlemini çağırırken aşağıdakileri unutmayın:

  • bir istek hem hem If-Modified-Since de If-None-Match üst bilgilerini belirtirse, istek içinde If-None-Matchbelirtilen ölçütlere göre değerlendirilir.

  • bir istek hem hem If-Unmodified-Since de If-Match üst bilgilerini belirtirse, istek içinde If-Matchbelirtilen ölçütlere göre değerlendirilir.

  • Yukarıda listelenen iki koşullu üst bilgi bileşimi dışında, bir istek yalnızca tek bir koşullu üst bilgi belirtebilir. Birden fazla koşullu üst bilgi belirtilmesi 400 ( durum koduyla sonuçlanırBad Request.

  • Yanıt bir ETag içeriyorsa, ETag'i işlemeden önce isteğin ve yanıtın sürümünü doğrulayın. Örneğin, sürüm 2011-08-18 ve üzeri tırnak içine alınmış bir ETag döndürür, ancak eski sürümler döndürmez. Uygulamanızın değerlendirilmeden önce her iki ETag biçimlerini de işleyebildiğinden emin olun.

  • RFC 2616 , tek bir üst bilgide birden çok ETag değerine izin verir, ancak Blob hizmetine yapılan istekler yalnızca bir ETag değeri içerebilir. Birden fazla ETag değeri belirtilmesi 400 ( durum koduyla sonuçlanmıştırBad Request).

Koşullu Üst Bilgileri Destekleyen İşlemler

Koşullu üst bilgileri destekleyen işlemler aşağıdaki tabloda açıklanmıştır.

REST İşlemi İşlem türü Desteklenen koşullu üst bilgiler
Ekleme Bloğu

(sürüm 2015-02-21 ve üzeri)
Write If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

x-ms-if-tags
URL'den Blok Ekle

(sürüm 2018-11-09 ve üzeri)
Write If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

x-ms-if-tags
İkili Büyük Nesneyi Kopyalama Okuma ve Yazma Hedef blobdaki koşullar için:

- If-Modified-Since

- If-Unmodified-Since

- If-Match

- If-None-Match

- x-ms-if-tags

Kaynak blobdaki koşullar için:

- x-ms-source-if-modified-since

- x-ms-source-if-unmodified-since

- x-ms-source-if-match

- x-ms-source-if-none-match

- x-ms-source-if-tags
İkili Büyük Nesneyi Silme Write If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

x-ms-if-tags
Kapsayıcıyı Silme Write If-Modified-Since

If-Unmodified-Since
Blob Alma Read If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

x-ms-if-tags
Blob Meta Verilerini Alma Read If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

x-ms-if-tags
BLOB özelliklerini Al Read If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

x-ms-if-tags
Blob Etiketlerini Alma

(sürüm 2019-12-12 ve üzeri)
Read x-ms-if-tags
Blok Listesini Al Read x-ms-if-tags
Sayfa Aralıklarını Alma Read If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

x-ms-if-tags
Blob Kiralama Write If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

x-ms-if-tags
Kira Kapsayıcısı Write If-Modified-Since

If-Unmodified-Since
URL'den Blob Yerleştir Write If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

Kaynak blobdaki koşullar için:

- x-ms-source-If-Modified-Since

- x-ms-source-if-Unmodified-Since

- x-ms-source-If-Match

- x-ms-source-If-None-Match

İkili Büyük Nesne Koyma Write If-Modified-Since

If-Unmodified-Since

If-Match

If-None-Match

x-ms-if-tags
URL'den Blok Koy

(sürüm 2018-03-28 ve üzeri)
Write x-ms-source-If-Modified-Since

x-ms-source-If-Unmodified-Since

x-ms-source-If-Match

x-ms-source-If-None-Match
Put Block List Write If-Modified-Since

DeğiştirilmemişSe-Since

If-Match

If-None-Match

x-ms-if-tags
Sayfa Koy Write If-Modified-Since

DeğiştirilmemişSe-Since

If-Match

If-None-Match

x-ms-if-tags
Url'den Sayfa Yerleştir

(sürüm 2018-11-09 ve üzeri)
Write If-Modified-Since

DeğiştirilmemişSe-Since

If-Match

If-None-Match

x-ms-if-tags
Blob Meta Verilerini Ayarlama Write If-Modified-Since

DeğiştirilmemişSe-Since

If-Match

If-None-Match

x-ms-if-tags
Blob Özelliklerini Ayarlama Write If-Modified-Since

DeğiştirilmemişSe-Since

If-Match

If-None-Match

x-ms-if-tags
Kapsayıcı ACL'lerini ayarlama Write If-Modified-Since

DeğiştirilmemişSe-Since
Kapsayıcı Meta Verilerini Ayarlama Write If-Modified-Since
Blob Etiketlerini Ayarlama

(sürüm 2019-12-12 ve üzeri)
Write x-ms-if-tags
Blob Katmanını Ayarla Write x-ms-if-tags
İkili Büyük Nesne Anlık Görüntüsünü Alma Read If-Modified-Since

DeğiştirilmemişSe-Since

If-Match

If-None-Match

x-ms-if-tags
Blob Değişmezlik İlkesini Ayarlama Write DeğiştirilmemişSe-Since

Aşağıdaki Blob hizmeti veri işlemleri şu anda koşullu üst bilgileri desteklememektedir:

Koşullu Üst Bilgileri Destekleyen İşlemler için HTTP Yanıt Kodları

İstek bir koşullu üst bilgi içeriyorsa ve belirtilen koşul istenen kaynak tarafından karşılanmazsa, Blob hizmeti bir HTTP yanıt kodu döndürür. Döndürülen yanıt kodları HTTP/1.1 protokol belirtimine (RFC 2616) uygundur.

Azure .NET istemci kitaplığındaki yöntemler bu hata yanıt kodlarını bir StorageException nesnesine dönüştürür.

Okuma İşlemleri

Aşağıdaki tabloda, işlem bir okuma işlemi olduğunda her koşullu üst bilgi için karşılanmayan bir koşul için döndürülen yanıt kodları gösterilir. Okuma işlemleri GET veya HEAD fiillerini kullanır.

Koşullu üst bilgi Koşul karşılanmadıysa yanıt kodu
If-Modified-Since Değiştirilmedi (304 (Değiştirilmedi))
If-Unmodified-Since Ön Koşul Başarısız Oldu (412 (Önkoşul Başarısız))
If-Match Ön Koşul Başarısız Oldu (412 (Önkoşul Başarısız))
If-None-Match Değiştirilmedi (304 (Değiştirilmedi))

2013-08-15 veya sonraki sürümlerde birden çok üst bilgi kullanırken elde etmek istediğiniz sonuçlar için yukarıdaki örneklere bakın.

Yazma İşlemleri

Aşağıdaki tabloda, işlem bir yazma işlemi olduğunda her koşullu üst bilgi için karşılanmayan bir koşul için döndürülen yanıt kodları gösterilir. Yazma işlemleri PUT veya DELETE fiillerini kullanır.

Koşullu üst bilgi Koşul karşılanmadıysa yanıt kodu
If-Modified-Since Ön Koşul Başarısız Oldu (412 (Önkoşul Başarısız))
If-Unmodified-Since Ön Koşul Başarısız Oldu (412 (Önkoşul Başarısız))
If-Match Ön Koşul Başarısız Oldu (412 (Önkoşul Başarısız))
If-None-Match Ön Koşul Başarısız Oldu (412 (Önkoşul Başarısız))

İşlemleri Kopyala

Aşağıdaki tabloda, işlem bir kopyalama işlemi olduğunda her koşullu üst bilgi için karşılanmayan bir koşul için döndürülen yanıt kodları gösterilir. Blobu Kopyala işlemi PUT fiillerini kullanır.

Koşullu üst bilgi Koşul karşılanmadıysa yanıt kodu
If-Modified-Since Ön Koşul Başarısız Oldu (412 (Önkoşul Başarısız))
If-Unmodified-Since Ön Koşul Başarısız Oldu (412 (Önkoşul Başarısız))
If-Match Ön Koşul Başarısız Oldu (412 (Önkoşul Başarısız))
If-None-Match Ön Koşul Başarısız Oldu (412 (Önkoşul Başarısız))
x-ms-source-if-modified-since Ön Koşul Başarısız Oldu (412 (Önkoşul Başarısız))
x-ms-source-if-unmodified-since Ön Koşul Başarısız Oldu (412 (Önkoşul Başarısız))
x-ms-source-if-match Ön Koşul Başarısız Oldu (412 (Önkoşul Başarısız))
x-ms-source-if-none-match Ön Koşul Başarısız Oldu (412 (Önkoşul Başarısız))

Etiketler Koşullu İşlemler

Blob hizmeti tarafından desteklenen standart HTTP koşullu üst bilgilerine ek olarak, çeşitli işlemler de blob kaynağındaki etiketlere karşı koşulları destekler.

Koşullu üst bilgi Description
x-ms-if-tags Sürüm 2019-12-12 ve daha yeni. Bir TagsPredicate değer. İşlemi gerçekleştirmek için bu üst bilgiyi belirtin, ancak koşul blob etiketlerine göre değerlendirilir true .
x-ms-source-if-tags Sürüm 2019-12-12 ve daha yeni. Yalnızca Blobu Kopyala için geçerlidir. Bir TagsPredicate değer. İşlemi gerçekleştirmek için bu üst bilgiyi belirtin, ancak koşul kaynak blob'un etiketlerine göre değerlendirilir true .

bir istekte x-ms-if-tags veya x-ms-source-if-tags koşullu üst bilgi varsa ve TagsPredicate değeri olarak değerlendirilirse false, Blob hizmeti işlem için hata kodu 412 (Önkoşul Başarısız) döndürür.

Çağıranın veya x-ms-source-if-tags koşullu üst bilgilerini kullanabilmesi x-ms-if-tags için blobdaki etiketleri okuma izni olmalıdır.

Etiket Koşulu Söz Dizimi

Blob hizmeti, üst bilginin değeri için ANSI SQL WHERE yan tümcesi dil bilgisinin TagsPredicate bir alt kümesini destekler. Aşağıdaki işleçler desteklenir:

İşleç Açıklama Örnek
= Eşittir Status = 'In Progress'
<> Eşit değildir Status <> 'Done'
> Büyüktür LastModified > '2018-06-18 20:51:26Z'
>= Büyüktür veya eşittir Priority >= '05'
< Küçüktür Age < '032'
<= Küçüktür veya eşittir Reviewer <= 'Smith'
AND Mantıksal ve Name > 'C' AND Name < 'D'
Age > '032' AND Age < '100'
OR Mantıksal veya Status = 'Done' or LastModified > '2018-06-18 20:51:26Z'

Tüm etiket değerleri dizelerdir ve desteklenen ikili ilişkisel işleçler etiket değerlerinin sözcük temelli sıralamasını kullanır. Sayılar ve tarihler de dahil olmak üzere dize olmayan veri türlerini desteklemek için uygun doldurma ve sıralanabilir biçimlendirme kullanılmalıdır. Etiket değerleri tek tırnak içine alınmalıdır.

Etiket adları normal SQL tanımlayıcılarıysa, kaçış olmadan mevcut olabilir; özel karakterler içeriyorsa, çift tırnak işaretiyle sınırlandırılmalıdır (ör. "TagName" = 'TagValue').

İfadeler, birden çok etiket adı ve değeri için karşılaştırmalar içerebilir. Parantez (( ve )) mantıksal ifadeleri gruplandırmak ve kurallı işlem sırasını denetlemek için kullanılabilir. A TagsPredicate , en fazla on (10) mantıksal işlem içerebilir.

Depolama hizmeti, hata kodu 400 (Hatalı İstek) olan geçersiz bir ifade içeren istekleri reddeder.

Ayrıca Bkz.

Blob Hizmeti Kavramları