Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
İşlem, Put Page bir sayfa blobuna bir sayfa aralığı yazar.
İstek
Put Page isteğini aşağıdaki gibi oluşturabilirsiniz. HTTPS kullanmanızı öneririz.
Hesabımı depolama hesabınızın adıyla değiştirin:
| PUT yöntem isteği URI | HTTP sürümü |
|---|---|
https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=page |
HTTP/1.1 |
Öykünmüş depolama hizmeti isteği
Emülasyon edilmiş depolama hizmetine karşı bir talep yaparken, emülatör ana bilgisayar adını ve Blob servis portunu , ardından emüle edilen depolama hesabı adını belirtin 127.0.0.1:10000:
| PUT yöntem isteği URI | HTTP sürümü |
|---|---|
http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob?comp=page |
HTTP/1.1 |
Daha fazla bilgi için bkz. Yerel Azure Depolama geliştirmesi için Azurite öykünücüsü kullanma.
URI parametreleri
Talep URI'sinde aşağıdaki ek parametreleri belirtebilirsiniz:
| Parametre | Description |
|---|---|
timeout |
Optional. Parametre timeout saniye cinsinden ifade edilir. Daha fazla bilgi için bkz. Blob servis işlemleri için zaman aşımını ayarlayın. |
İstek başlıkları
Gerekli ve isteğe bağlı istek üst bilgileri aşağıdaki tabloda açıklanmıştır:
| İstek başlığı | Description |
|---|---|
Authorization |
Gerekli. Yetkilendirme düzenini, hesap adını ve imzayı belirtir. Daha fazla bilgi için bkz. azure depolamaistekleri yetkilendirme |
Date veya x-ms-date |
Gerekli. İstek için Eşgüdümlü Evrensel Saati (UTC) belirtir. Daha fazla bilgi için bkz. azure depolamaistekleri yetkilendirme |
x-ms-version |
Tüm yetkili talepler için gereklidir. Bu istek için kullanılacak işlemin sürümünü belirtir. Daha fazla bilgi için bkz . Azure Depolama hizmetleri için sürüm oluşturma. |
Range |
veya Rangex-ms-range gereklidir.Sayfa olarak yazılacak bayt aralığını belirtir. Aralığın hem başlangıcı hem de sonu belirtilmelidir. Bu başlık, HTTP/1.1 protokol spesifikasyonu ile tanımlanır. Bir sayfa güncelleme işlemi için sayfa aralığı 4 MiB'e kadar olabilir. Sayfa temizleme işlemi için, sayfa aralığı blobun tam boyutunun değeri kadar büyük olabilir. Sayfaların 512 baytlık sınırlarla hizalanması gerektiğinden, başlangıç ofseti 512 modülü ve son ofseti 512 –1 modülü olmalıdır. Geçerli bayt aralıklarına örnekler 0-511, 512-1023 ve benzeri. Blob Depolama, başlık için yalnızca tek bir bayt aralığı Range kabul eder ve bayt aralığı aşağıdaki formatta belirtilmelidir: bytes=startByte-endByte.Eğer her ikisi Range de belirtilirse x-ms-range , hizmet 'nin değerini x-ms-rangekullanır. Daha fazla bilgi için, Blob servis işlemleri için aralık başlığını belirt bkz. |
x-ms-range |
veya Rangex-ms-range gereklidir.Sayfa olarak yazılacak bayt aralığını belirtir. Aralığın hem başlangıcı hem de sonu belirtilmelidir. Bu başlık, HTTP/1.1 protokol spesifikasyonu ile tanımlanır. Bir sayfa güncelleme işlemi için, sayfa aralığı 4 MiB boyutuna kadar ulaşabilir. Sayfa temizleme işlemi için, sayfa aralığı blobun tam boyutunun değerine kadar olabilir. Sayfaların 512 baytlık sınırlarla hizalanması gerektiğinden, başlangıç ofseti 512 modülü ve son ofseti 512 – 1 olmalıdır. Geçerli bayt aralıklarına örnekler 0-511, 512-1023 vb. olabilir. Blob Depolama, başlık için yalnızca tek bir bayt aralığı x-ms-range kabul eder ve bayt aralığı aşağıdaki formatta belirtilmelidir: bytes=startByte-endByte.Eğer her ikisi Range de belirtilirse x-ms-range , hizmet 'nin değerini x-ms-rangekullanır. Daha fazla bilgi için Blob servis işlemleri için aralık başlığını belirt sayfasına bakınız. |
Content-Length |
Gerekli. İstek gövdesinde iletilen bayt sayısını belirtir. Başlık x-ms-page-write olarak clearayarlandığında, bu başlığın değeri olarak 0ayarlanmalıdır. |
Content-MD5 |
Optional. Sayfa içeriğinin MD5 hash'i. Bu hash, taşıma sırasında sayfanın bütünlüğünü doğrulamak için kullanılır. Bu başlık belirtildiğinde, depolama hizmeti gelen içeriğin hash'ını bu başlık değeriyle karşılaştırır. <br / >Not: Bu MD5 hash blobla birlikte saklanmıyor. İki karma eşleşmezse, işlem 400 (Hatalı İstek) hata koduyla başarısız olur. |
x-ms-content-crc64 |
Optional. Sayfa içeriğinin CRC64 hash'i. Bu hash, taşıma sırasında sayfanın bütünlüğünü doğrulamak için kullanılır. Bu başlık belirtildiğinde, depolama hizmeti gelen içeriğin hash'ını bu başlık değeriyle karşılaştırır. Not: Bu CRC64 hash blobla birlikte saklanmıyor. İki karma eşleşmezse, işlem 400 (Hatalı İstek) hata koduyla başarısız olur. Hem Content-MD5 başlık hem x-ms-content-crc64 de başlık varsa, istek 400 (Kötü İstek) ile başarısız olur.Bu başlık, 2019-02-02 ve sonraki sürümlerde desteklenmektedir. |
x-ms-page-write: {update ¦ clear} |
Gerekli. Aşağıdaki seçeneklerden birini belirtebilirsiniz: - Update: İstek gövdesi tarafından belirtilen baytları belirtilen aralığa yazar.
Range Güncellemeyi gerçekleştirmek için ve Content-Length başlıkları eşleşmelidir.- Clear: Belirtilen aralığı temizler ve o menzil için depoda kullanılan alanı serbest bırakır. Bir aralığı temizlemek için, başlığı Content-Length , 0olarak ayarlayın ve başlığı maksimum blob boyutuna kadar temizlenecek aralığı gösteren bir değere ayarlayın Range . |
x-ms-encryption-scope |
Optional. İstek içeriğini şifrelemek için kullanılacak şifreleme kapsamını gösterir. Bu başlık, 2019-02-02 ve sonraki sürümlerde desteklenmektedir. |
x-ms-lease-id:<ID> |
Blob etkin bir kiraya sahipse gereklidir. Bu işlemi etkin kirası olan bir blobda gerçekleştirmek için bu üst bilgi için geçerli kira kimliğini belirtin. |
x-ms-if-sequence-number-le: <num> |
Optional. Eğer blobun dizi numarası belirtilen değerden az veya eşitse, talep devam eder. Aksi takdirde, SequenceNumberConditionNotMet hatasıyla başarısız olur (HTTP durum kodu 412 – Ön Koşul Başarısız Oldu). |
x-ms-if-sequence-number-lt: <num> |
Optional. Eğer blobun dizi numarası belirtilen değerden küçükse, talep devam eder. Aksi takdirde, SequenceNumberConditionNotMet hatasıyla başarısız olur (HTTP durum kodu 412 – Ön Koşul Başarısız Oldu). |
x-ms-if-sequence-number-eq: <num> |
Optional. Blobun dizi numarası belirtilen değere eşitse, talep devam eder. Aksi takdirde, SequenceNumberConditionNotMet hatasıyla başarısız olur (HTTP durum kodu 412 – Ön Koşul Başarısız Oldu). |
If-Modified-Since |
Optional. Bir DateTime değer. Bu koşullu başlığı yalnızca blob belirtilen tarih/saatten sonra değiştirilmişse sayfayı yazacak şekilde belirtin. Blob değiştirilmediyse, Blob Depolama durum kodu 412'yi (Ön Koşul Başarısız Oldu) döndürür. |
If-Unmodified-Since |
Optional. Bir DateTime değer. Bu koşullu başlığı yalnızca blob belirlenen tarih/saatten beri değiştirilmemişse sayfayı yazacak şekilde belirtin. Blob değiştirildiyse, Blob Depolama durum kodu 412'yi (Ön Koşul Başarısız Oldu) döndürür. |
If-Match |
Optional. ETag değeri. Bu koşullu başlık için, blobun ETag değeri belirtilen değerle eşleşiyorsa sayfayı yazması için bir ETag değeri belirtin. Değerler eşleşmezse, Blob Depolama durum kodu 412'yi (Ön Koşul Başarısız Oldu) döndürür. |
If-None-Match |
Optional. ETag değeri. Bu koşullu başlık için sayfayı yazacak bir ETag değeri belirtin; eğer blobun ETag değeri belirtilen değerle eşleşmiyorsa. Değerler aynıysa, Blob Depolama durum kodu 412'yi (Ön Koşul Başarısız Oldu) döndürür. |
x-ms-client-request-id |
Optional. Günlük kaydı yapılandırıldığında günlüklere kaydedilen 1 kibibayt (KiB) karakter sınırına sahip istemci tarafından oluşturulan, opak bir değer sağlar. İstemci tarafı etkinliklerini sunucunun aldığı isteklerle ilişkilendirmek için bu üst bilgiyi kullanmanızı kesinlikle öneririz. Daha fazla bilgi için bkz. |
Bu işlem ayrıca, belirli bir koşul sağlandığında işlemi yürütmek için koşullu başlıkların kullanılmasını destekler. Daha fazla bilgi için, Blob servis işlemleri için koşullu başlıkları belirt bkz.
İstek başlıkları (müşteri tarafından sağlanan şifreleme anahtarları)
2019-02-02 sürümünden itibaren, müşteri tarafından sağlanan bir anahtarla bir blob şifreleme isteğinde aşağıdaki başlıkları belirtebilirsiniz. Müşteri tarafından sağlanan anahtarla (ve ilgili başlık setiyle şifreleme) isteğe bağlıdır.
| İstek başlığı | Description |
|---|---|
x-ms-encryption-key |
Gerekli. Base64 kodlu AES-256 şifreleme anahtarı. |
x-ms-encryption-key-sha256 |
Gerekli. Base64 kodlu SHA256 şifreleme anahtarının hash'i. |
x-ms-encryption-algorithm: AES256 |
Gerekli. Şifreleme için kullanılacak algoritmayı belirler. Bu başlığın değeri olmalıdır AES256. |
Talep başlıkları (yapılandırılmış gövde)
2025-01-05 sürümü itibarıyla, yapılandırılmış gövde formatından yararlanmak için talebe göre aşağıdaki başlıklar belirtilebilir.
| İstek başlığı | Description |
|---|---|
Content-Length |
Gerekli. Kodlanmış talebin uzunluğu olmalı (sadece sayfa içeriğinin uzunluğu değil). Başlığın değeri, kodlanmış isteğin beklenen uzunluğuyla eşleşmiyorsa, işlem hata kodu 400 (Kötü İstek) ile başarısız olur. |
x-ms-structured-body |
Gerekli. Mesaj formatı yapılandırılmışsa dahil edilmelidir. Bu başlığın değeri, mesaj şeması versiyonu ve özelliklerini içerir. Şu anda desteklenen XSM/1.0; properties=crc64tek değer , bu da isteğin kodlanmış mesajda crc64 kontrol toplamı segmentleri kullandığını gösterir. Değer bu değerle eşleşmezse, işlem hata kodu 400 (Kötü İstek) ile başarısız olur. Eğer istekte sağlanan içerik, belirli bir segment için sağlanan kontrol toplamıyla eşleşmiyorsa (Kötü İstek) hata kodu 400 (Kötü İstek) de başarısız olacaktır. |
x-ms-structured-content-length |
Gerekli. Mesaj formatı yapılandırılmışsa dahil edilmelidir. Bu başlığın değeri, sayfa içeriğinin uzunluğudur ve mesaj kodlaması nedeniyle her zaman başlık Content-Length değerinden daha küçük olur. Başlığın değeri, istekte verilen blok içeriğinin uzunluğuyla eşleşmiyorsa, işlem hata kodu 400 (Kötü İstek) ile başarısız olur. |
İstek içeriği
İstek gövdesi sayfanın içeriğini içerir.
Örnek istek: Bayt aralığını güncelle
Request Syntax:
PUT https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=page HTTP/1.1
Request Headers:
x-ms-page-write: update
x-ms-date: Fri, 16 Sep 2011 22:15:50 GMT
x-ms-version: 2011-08-18
x-ms-range: bytes=0-65535
Authorization: SharedKey myaccount:4KdWDiTdA9HmIF9+WF/8WfYOpUrFhieGIT7f0av+GEI=
Content-Length: 65536
Örnek istek: Bayt aralığını temizle
Request Syntax:
PUT https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=page HTTP/1.1
Request Headers:
Range: bytes=1024-2048
x-ms-page-write: clear
x-ms-date: Sun, 25 Sep 2011 23:37:35 GMT
x-ms-version: 2011-08-18
Authorization: SharedKey myaccount:4KdWDiTdA9HmIF9+WF/8WfYOpUrFhieGIT7f0av+GEI=
Yanıt
Yanıt bir HTTP durum kodu ve bir dizi yanıt üst bilgisi içerir.
Durum kodu
Başarılı bir işlem 201 (Oluşturuldu) durum kodunu döndürür.
Durum kodları hakkında daha fazla bilgi için bkz. Durum ve hata kodları.
Yanıt başlıkları
Bu işlemin yanıtı aşağıdaki üst bilgileri içerir. Yanıt, ek standart HTTP başlıkları da içerebilir. Tüm standart başlıklar HTTP/1.1 protokol belirtimine uygundur.
| Sözdizimi | Description |
|---|---|
ETag |
Blob için ETag. Talep sürümü 2011-08-18 ve sonrasa ETag değeri tırnak içinde eklenmiştir. ETag, veya Put Page istek başlığı için değerini If-Match belirterek koşullu If-None-Match bir işlem gerçekleştirmek için kullanılabilir. |
Last-Modified |
Blobun en son değiştirildiği tarih ve saat. Tarih biçimi RFC 1123'e uygundur. Daha fazla bilgi için bkz. Tarih/saat değerlerini başlıklarda temsil et. Blob üzerindeki herhangi bir yazma işlemi, blobun meta veri veya özelliklerindeki güncellemeler dahil, blobun son değiştirilen zamanını değiştirir. |
Content-MD5 |
İstemcinin ileti içerik bütünlüğünü denetleyebilmesi için bu üst bilgi döndürülür. Bu başlığın değeri Blob Depolama tarafından hesaplanır. İstek başlıklarında belirtilen değerle mutlaka aynı olmayabilir. 2019-02-02 ve sonrasında olan sürüm için, bu başlık yalnızca istek bu başlığa sahip olduğunda geri döner. |
x-ms-content-crc64 |
2019-02-02 veya daha sonraki sürüm için, istemcinin mesaj içeriği bütünlüğünü kontrol edebilmesi için bu başlık geri döner. Bu başlığın değeri Blob Depolama tarafından hesaplanır. İstek başlıklarında belirtilen değerle mutlaka aynı olmayabilir. Eğer Sürüm 2026-10-06 öncesindeyse, bu başlık istekte bulunmadığında geri döner Content-MD5 . 2026-10-06 veya daha sonraki sürümlerle yapılan taleplerde, bu başlık isteğinde başlık olsa bile geri Content-MD5 gönderilecektir. |
x-ms-blob-sequence-number |
Sayfa blobu için geçerli sıra numarası. |
x-ms-request-id |
Yapılan talebi benzersiz şekilde tanımlar ve talebi sorun gidermek için kullanılabilir. Daha fazla bilgi için bkz. API işlem sorunlarını giderme. |
x-ms-version |
Talebi çalıştırmak için kullanılan Blob servis sürümünü gösterir. Bu üst bilgi, 2009-09-19 ve sonraki sürümlerde yapılan istekler için döndürülür. |
Date |
Hizmet tarafından oluşturulan ve yanıtın başlatıldığı saati gösteren UTC tarih/saat değeri. |
x-ms-request-server-encrypted: true/false |
2015-12-11 ve sonraki sürümler. Bu başlığın true değeri, isteğin içeriği belirtilen algoritma kullanılarak başarıyla şifrelenmişse ayarlanır. Aksi takdirde, değer olarak ayarlanır false. |
x-ms-encryption-key-sha256 |
2019-02-02 ve sonrası sürümler. İstek müşteri tarafından sağlanan bir anahtar kullanılarak şifreleme için kullanıldıysa, istemci verilen anahtarla isteğin içeriğinin başarılı şekilde şifrelendiğinden emin olabilir. |
x-ms-encryption-scope |
2019-02-02 ve sonrası sürümler. İstemci şifreleme kapsamı kullanılarak istemcinin içeriğinin başarılı şekilde şifrelendiğinden emin olmak için şifreleme kapsamı kullanıldığında geri döner. |
x-ms-client-request-id |
İsteklerde ve ilgili yanıtlarda sorun gidermek için kullanılabilir. bu üst bilginin değeri, istekte mevcutsa ve değer 1.024'ten fazla görünür ASCII karakteri içermiyorsa x-ms-client-request-id üst bilgisinin değerine eşittir. İstekte x-ms-client-request-id üst bilgisi yoksa yanıtta bulunmaz. |
x-ms-structured-body |
Eğer talep yapılandırılmış bir vücut talebi olarak işleniyorsa geri gönderilir. Bu başlığın değeri, talebe gönderilen değere eşittir ve şu anda bu değer olarak olmalıdır XSM/1.0; properties=crc64. |
Yanıtın içeriği
Yok.
Örnek yanıt
Response Status:
HTTP/1.1 201 Created
Response Headers:
x-ms-content-crc64: 77uWZTolTHU
Date: Sun, 25 Sep 2011 22:33:35 GMT
ETag: "0x8CB171BA9E94B0B"
Last-Modified: Sun, 25 Sep 2011 12:13:31 GMT
x-ms-version: 2011-08-18
x-ms-blob-sequence-number: 0
Content-Length: 0
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
Authorization
Azure Depolama'da herhangi bir veri erişim işlemi çağrılırken yetkilendirme gereklidir. aşağıda açıklandığı gibi Put Page işlemini yetkileyebilirsiniz.
Önemli
Microsoft, Azure Depolama'ya yönelik istekleri yetkilendirmek için Yönetilen kimliklerle Microsoft Entra Id kullanılmasını önerir. Microsoft Entra ID, Paylaşılan Anahtar yetkilendirmesine kıyasla üstün güvenlik ve kullanım kolaylığı sağlar.
- Microsoft Entra Id (önerilen)
-
paylaşılan erişim imzaları (SAS)
-
paylaşılan anahtar
Azure Depolama, blob verilerine yönelik istekleri yetkilendirmek için Microsoft Entra Id kullanılmasını destekler. Microsoft Entra Id ile azure rol tabanlı erişim denetimini (Azure RBAC) kullanarak bir güvenlik sorumlusuna izin vekleyebilirsiniz. Güvenlik sorumlusu bir kullanıcı, grup, uygulama hizmet sorumlusu veya Azure yönetilen kimliği olabilir. OAuth 2.0 belirtecini döndürmek için güvenlik sorumlusunun kimliği Microsoft Entra Id tarafından doğrulanır. Daha sonra belirteç, Blob hizmetine karşı bir isteği yetkilendirmek için kullanılabilir.
Microsoft Entra Id kullanarak yetkilendirme hakkında daha fazla bilgi edinmek için bkz.Microsoft Entra Id kullanarak bloblara erişimi yetkilendirme
Permissions
Aşağıda bir Microsoft Entra kullanıcısı, grubu, yönetilen kimliği veya hizmet sorumlusunun Put Page işlemini çağırması için gereken RBAC eylemi ve bu eylemi içeren en az ayrıcalıklı yerleşik Azure RBAC rolü verilmiştir:
- Azure RBAC eylemini
: Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write - En az ayrıcalıklı yerleşik rol:Depolama Blob Veri Katkıda Bulunanı
Azure RBAC kullanarak rol atama hakkında daha fazla bilgi edinmek için bkz.
Açıklamalar
İşlem, Put Page bir sayfa blobuna bir sayfa aralığı yazar. Bu işlem yalnızca mevcut bir sayfa blobunda çağrılabilir. Yeni bir sayfa blobu oluşturmak için çağrılamaz, blok blob'ta da çağrılamaz. Şu anda var olmayan bir blob adıyla çağrı Put Page yapmak HTTP durum kodu 404 (Bulunmadı) döndürür.
Yeni bir sayfa blobu oluşturmak için Put Blob'u çağırın ve sayfa blob olarak oluşturulacak blob türünü belirtin. Bir sayfa blobu 8 TiB'ye kadar boyut olabilir.
Blobun aktif bir kira sözleşmesi varsa, istemci sayfa yazma talebinde geçerli bir kira kimliği belirtmelidir.
Sayfa güncelleme operasyonları
Seçenekle Put Page çağırmak, Update belirtilen sayfa blobunda yerinde bir yazma işlemi gerçekleştirir. Belirtilen sayfadaki herhangi bir içerik güncellemeyle üzerine yazılır.
Önemli
Sunucu zaman kapanıyorsa veya bağlantınız bir işlem sırasında Put Page kapanıyorsa, sayfa güncellenmiş olabilir ya da güncellenmemiş olabilir. Bu nedenle, başarı gösteren bir yanıt alana kadar güncellemeyi tekrar denemeye devam etmelisiniz.
Güncelleme işlemi için gönderilen her sayfa Put Page aralığı 4 MiB'e kadar olabilir. Sayfanın başlangıç ve bitiş aralığı 512 baytlık sınırlarla hizalanmalıdır. 4 MiB'den büyük bir sayfa aralığı yüklemeye çalışırsanız, hizmet durum kodu 413'ü (Talep Varlık Çok Büyük) döndürür.
Sayfa temizleme işlemleri
Seçenekle Put Page çağırmak, Clear belirtilen sayfanın kullandığı depolama alanını serbest bırakır. Temizlenmiş sayfalar artık sayfa blobun bir parçası olarak takip edilmiyor.
Temizlenen sayfalar artık depolama hesabına karşı ücret talep edilmez, çünkü depolama kaynakları serbest bırakılmıştır. Bunun tek istisnası, sayfa blob'unun mevcut anlık görüntüleri varsa. Anlık görüntülerdeki sayfalar, aynı sayfalar kaynak blobun parçası olarak artık yoksa, ücret alır.
Eşlilik sorunlarını yönetin
Blob Depolama, örtüşen sayfalara eşzamanlı yazımları sıralı olarak yönetir. Yani, hizmet tarafından işlenen son sayfa blobun içeriğini belirler. Bu nedenle, blobun içeriğinin bütünlüğünü sağlamak için, istemci örtüşen sayfalara yazmaları aşağıdaki yaklaşımlardan birini veya birkaçını kullanarak yönetmelidir:
Her başarılı çağrı için yanıt başlığının değerini
Last-ModifiedPut Pagekontrol edebilirsiniz. Blob Depolama'dan gelen yanıtların sırası, servisin ne sırayla yürütüldüğü ile mutlaka örtüşmemektedir. Ancak değeriLast-Modifiedher zaman servisin talepleri işlediği sırayı gösterir.Güncellemeleri koşullu olarak iyimser eşzamanlılık kullanarak blobun ETag'ına veya son modifiye zamanına göre gerçekleştirebilirsiniz. Bu yaklaşım, eşzamanlı yazma sayısı nispeten düşük ise iyi çalışır. Bu amaçla koşullu istek başlıkları
If-Match,If-None-Match,If-Modified-Since, veIf-Unmodified-Sincekullanın.Lease Blob'u arayarak blob'u diğer yazımlara karşı bir dakikalık süreyle veya kira sözleşmesi yenilenirse daha uzun süreyle kilitleyebilirsiniz.
Blobun sırası numarasını kullanarak yanıt verilmeyen bir isteği tekrar denenmenin eşzamanlı güncellemelerle sonuçlanmamasını sağlayabilirsiniz. Bu yaklaşım, sayfa yazımları için yüksek verimliliğe ihtiyaç duyan müşteriler için en iyi olabilir. Bu durum aşağıdaki bölümde ayrıntılı olarak açıklanmıştır.
Sayfa blob sırası numarasını kullanarak isteği tekrar denemek için
Bir çağrı Put Page zaman aşımına tutulduğunda veya yanıt gelmediğinde, talebin başarılı olup olmadığını kesin olarak bilmek mümkün değil. Bu nedenle isteği tekrar denemeniz gerekir, ancak Azure depolama hizmetlerinin dağıtık yapısı nedeniyle, yeniden denenmiş istek başarılı olduktan sonra orijinal istek işlenebilir. Gecikmeli orijinal istek diğer güncellemelerin üzerine yazabilir ve beklenmedik bir sonuç verebilir. Aşağıdaki dizis bunun nasıl olabileceğini gösterir:
Put PageSayfa 0'a "X" değeri yazma talebi zaman aşır veya yanıt vermez.Sayfa 0'a "X" değeri yazmak için tekrar denenmiş bir talep başarılı olur.
Sayfa 0'a "Y" değeri yazma talebi başarılı olur.
Orijinal istek başarılı olur ve sayfa 0'a "X" değeri yazılır.
Sayfa 0 okuduğunda istemci bu noktada "Y" değerini beklerken "X" değeri döner.
Bu tür bir çatışma, orijinal isteğin 100'den 499'a veya 503'e (Sunucu Meşgul) arasında bir durum kodu döndürmemesi durumunda meydana gelebilir. Bu durum kodlarından biri geri dönerse, talebin başarılı mı yoksa başarısız mı olduğundan emin olabilirsiniz. Ancak hizmet bu aralığın dışında bir durum kodu döndürürse, orijinal talebin durumunu bilmenin bir yolu yok.
Bu tür bir çatışmayı önlemek için, sayfa blob'un sıralı numarasını kullanarak bir isteği tekrar denerken orijinal isteğin başarılı olmayacağını garanti edebilirsiniz. Bunu yapmak için, orijinal isteği tekrar denemeden önce sıralar numarasını artırmalısınız. Daha sonra, isteğin sırası numarası beklenen dizi numarasıyla eşleşmezse başarısız olmasını sağlamak için koşullu dizi numarası başlıklarını kullanabilirsiniz. Aşağıdaki dizis bu yaklaşımı göstermektedir:
İstemci, Put Blob ile bir sayfa blobu oluşturur ve sırası numarasını ayarlamaktadır
0.Put PageSayfa 0'a "X" değerini yazma talebi başlığıif-sequence-number-lt1zaman aşımına ayarlanmış veya yanıt vermez.İstemci dizim numarasını güncelleye
Set Blob Propertiesçağırıyor1.Sayfa 0'a "X" değerini yazmak için yeniden denenmiş bir istek başarılı
if-sequence-number-lt2olur.Sayfa 0'a "Y" değerini yazma talebi ve
if-sequence-number-ltbaşarılı2olarak ayarlanır.Orijinal istek sonunda işleniyor, ancak başarısız oluyor çünkü dizi numarasının 1'den küçük olması şartını belirtiyor (yani
if-sequence-num-ltbaşlık olarak1ayarlanmıştır). Hata SequenceNumberConditionNotMet (HTTP durum kodu 412 – Ön Koşul Başarısız Oldu).Sayfa 0'ı okuduğunuzda beklenen değer "Y" döner.
Ayrıca bakınız
Azure Depolama isteklerini yetkilendirme
Durum ve hata kodları
Blob servis işlemleri için zaman aşımlarını ayarla