Udostępnij za pośrednictwem


Umieść stronę z adresu URL

Operacja Put Page From URL zapisuje zakres stron w stronicowym obiekcie blob, w którym zawartość jest odczytywana z adresu URL. Ten interfejs API jest dostępny w wersji 2018-11-09.

Żądanie

Żądanie można skonstruować Put Page From URL w następujący sposób. Zalecamy korzystanie z protokołu HTTPS. Zastąp ciąg myaccount nazwą konta magazynu:

Identyfikator URI żądania PUT Wersja PROTOKOŁU HTTP
https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=page HTTP/1.1

Identyfikator URI usługi emulacji magazynu

Gdy wysyłasz żądanie względem emulowanej usługi magazynu, określ nazwę hosta emulatora i port usługi Blob jako 127.0.0.1:10000, a następnie nazwę emulowanego konta magazynu:

Identyfikator URI żądania PUT Wersja PROTOKOŁU HTTP
http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob?comp=page HTTP/1.1

Aby uzyskać więcej informacji, zobacz Use the Azurite emulator for local Azure Storage development (Używanie emulatora Azurite do lokalnego programowania w usłudze Azure Storage).

Parametry identyfikatora URI

Dla identyfikatora URI żądania można określić następujące dodatkowe parametry:

Parametr Opis
timeout Opcjonalny. Parametr jest wyrażony timeout w sekundach. Aby uzyskać więcej informacji, zobacz Ustawianie limitów czasu dla operacji usługi Blob Service.

Nagłówki żądań

Wymagane i opcjonalne nagłówki żądań zostały opisane w poniższej tabeli:

Nagłówek żądania Opis
Authorization Wymagane. Określa schemat autoryzacji, nazwę konta i podpis. Aby uzyskać więcej informacji, zobacz Autoryzowanie żądań do usługi Azure Storage.
Date lub x-ms-date Wymagane. Określa dla żądania godzinę w formacie uniwersalnego czasu koordynowanego (UTC). Aby uzyskać więcej informacji, zobacz Autoryzowanie żądań do usługi Azure Storage.
x-ms-version Wymagane dla wszystkich autoryzowanych żądań. Określa wersję operacji do użycia dla tego żądania. Aby uzyskać więcej informacji, zobacz Przechowywanie wersji dla usług Azure Storage.
Range Wymagana jest wartość Range lub x-ms-range .

Określa zakres bajtów do zapisania jako strony. Należy określić zarówno początek, jak i koniec zakresu. Ten nagłówek jest definiowany przez specyfikację protokołu HTTP/1.1.

W przypadku operacji aktualizacji strony zakres stron może mieć rozmiar do 4 MiB.

Ponieważ strony muszą być wyrównane do granic 512-bajtowych, przesunięcie początkowe musi być modulem 512, a przesunięcie końcowe musi być modulem 512–1. Przykłady prawidłowych zakresów bajtów to 0-511, 512-1023 itd.

Usługa Blob Service akceptuje tylko jeden zakres bajtów dla nagłówka Range , a zakres bajtów musi być określony w następującym formacie: bytes=startByte-endByte.

Jeśli określono obie Range wartości i x-ms-range , usługa używa wartości x-ms-range. Aby uzyskać więcej informacji, zobacz Określanie nagłówka zakresu dla operacji usługi Blob Service.
x-ms-range Wymagana jest wartość Range lub x-ms-range .

Określa zakres bajtów do zapisania jako strony. Należy określić zarówno początek, jak i koniec zakresu. Ten nagłówek jest definiowany przez specyfikację protokołu HTTP/1.1.

Zakres stron może mieć rozmiar do 4 MiB.

Ponieważ strony muszą być wyrównane do granic 512-bajtowych, przesunięcie początkowe musi być modulem 512, a przesunięcie końcowe musi być modulem 512–1. Przykłady prawidłowych zakresów bajtów to 0-511, 512-1023 itd.

Usługa Blob Service akceptuje tylko jeden zakres bajtów dla nagłówka x-ms-range , a zakres bajtów musi być określony w następującym formacie: bytes=startByte-endByte.

Jeśli określono obie Range wartości i x-ms-range , usługa używa wartości x-ms-range. Aby uzyskać więcej informacji, zobacz Określanie nagłówka zakresu dla operacji usługi Blob Service.
Content-Length Wymagane. Określa liczbę bajtów przesyłanych w treści żądania. Wartość tego nagłówka musi być ustawiona na zero. Jeśli długość nie jest równa zero, operacja kończy się niepowodzeniem z kodem stanu 400 (Nieprawidłowe żądanie).
x-ms-copy-source:name Wymagane. Określa adres URL źródłowego obiektu blob. Wartość może być adresem URL o długości do 2 KiB, który określa obiekt blob. Wartość powinna być zakodowana w adresie URL, tak jak byłaby wyświetlana w identyfikatorze URI żądania. Źródłowy obiekt blob musi być publiczny lub musi być autoryzowany za pośrednictwem sygnatury dostępu współdzielonego. Jeśli źródłowy obiekt blob jest publiczny, do wykonania operacji nie jest wymagana żadna autoryzacja. Oto kilka przykładów źródłowych adresów URL obiektów:

- https://myaccount.blob.core.windows.net/mycontainer/myblob
- https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=<DateTime>
- https://myaccount.blob.core.windows.net/mycontainer/myblob?versionid=<DateTime>
x-ms-copy-source-authorization: <scheme> <signature> Opcjonalny. Określa schemat autoryzacji i podpis dla źródła kopiowania. Aby uzyskać więcej informacji, zobacz Autoryzowanie żądań do usługi Azure Storage.
Tylko element nośny schematu jest obsługiwany w przypadku Microsoft Entra.
Ten nagłówek jest obsługiwany w wersji 2020-10-02 lub nowszej.
x-ms-source-range Przekazuje bajty obiektu blob w źródłowym adresie URL w określonym zakresie. Należy określić zarówno początek, jak i koniec zakresu. Ten nagłówek jest definiowany przez specyfikację protokołu HTTP/1.1.

Zakres stron może mieć rozmiar do 4 MiB.

Usługa Blob Service akceptuje tylko jeden zakres bajtów dla nagłówka x-ms-source-range , a zakres bajtów musi być określony w następującym formacie: bytes=startByte-endByte.

Aby uzyskać więcej informacji , zobacz Określanie nagłówka zakresu dla operacji usługi Blob Service .
x-ms-source-content-md5 Opcjonalny. Skrót MD5 zawartości strony z identyfikatora URI. Ten skrót służy do weryfikowania integralności strony podczas transportu danych z identyfikatora URI. Po określeniu tego nagłówka usługa magazynu porównuje skrót zawartości, która dotarła z kopii źródła z tą wartością nagłówka.

Uwaga: ten skrót MD5 nie jest przechowywany w obiekcie blob.

Jeśli dwa skróty nie są zgodne, operacja kończy się niepowodzeniem z kodem błędu 400 (Nieprawidłowe żądanie).
x-ms-source-content-crc64 Opcjonalny. Skrót CRC64 zawartości strony z identyfikatora URI. Ten skrót służy do weryfikowania integralności strony podczas transportu danych z identyfikatora URI. Po określeniu tego nagłówka usługa magazynu porównuje skrót zawartości, która dotarła z kopii źródła z tą wartością nagłówka.

Uwaga: ten skrót CRC64 nie jest przechowywany w obiekcie blob.

Jeśli dwa skróty nie są zgodne, operacja kończy się niepowodzeniem z kodem błędu 400 (Nieprawidłowe żądanie).

Jeśli istnieją zarówno x-ms-source-content-md5 nagłówki, jak i x-ms-source-content-crc64 żądanie kończy się niepowodzeniem z błędem 400 (nieprawidłowe żądanie).

Ten nagłówek jest obsługiwany w wersji 2019-02-02 lub nowszej.
x-ms-lease-id:<ID> Wymagane, jeśli obiekt blob ma aktywną dzierżawę. Aby wykonać tę operację na obiekcie blob z aktywną dzierżawą, określ prawidłowy identyfikator dzierżawy dla tego nagłówka.
x-ms-if-sequence-number-le: <num> Opcjonalny. Jeśli numer sekwencji obiektu blob jest mniejszy lub równy określonej wartości, żądanie będzie kontynuowane. W przeciwnym razie kończy się niepowodzeniem z powodu błędu SequenceNumberConditionNotMet (kod stanu HTTP 412 — Niepowodzenie warunku wstępnego).
x-ms-if-sequence-number-lt: <num> Opcjonalny. Jeśli numer sekwencji obiektu blob jest mniejszy niż określona wartość, żądanie będzie kontynuowane. W przeciwnym razie kończy się niepowodzeniem z powodu błędu SequenceNumberConditionNotMet (kod stanu HTTP 412 — Niepowodzenie warunku wstępnego).
x-ms-if-sequence-number-eq: <num> Opcjonalny. Jeśli numer sekwencji obiektu blob jest równy określonej wartości, żądanie będzie kontynuowane. W przeciwnym razie kończy się niepowodzeniem z powodu błędu SequenceNumberConditionNotMet (kod stanu HTTP 412 — Niepowodzenie warunku wstępnego).
If-Modified-Since Opcjonalny. Wartość DateTime . Określ ten nagłówek warunkowy, aby zapisać stronę tylko wtedy, gdy obiekt blob został zmodyfikowany od określonej daty/godziny. Jeśli obiekt blob nie został zmodyfikowany, usługa Blob zwraca kod stanu 412 (Warunek wstępny nie powiodło się).
If-Unmodified-Since Opcjonalny. Wartość DateTime . Określ ten nagłówek warunkowy, aby zapisać stronę tylko wtedy, gdy obiekt blob nie został zmodyfikowany od określonej daty/godziny. Jeśli obiekt blob został zmodyfikowany, usługa Blob zwraca kod stanu 412 (Warunek wstępny nie powiodło się).
If-Match Opcjonalny. Wartość elementu ETag. Określ wartość ETag dla tego nagłówka warunkowego, aby zapisać stronę tylko wtedy, gdy wartość ETag obiektu blob jest zgodna z określoną wartością. Jeśli wartości nie są zgodne, usługa Blob service zwraca kod stanu 412 (Warunek wstępny nie powiodło się).
If-None-Match Opcjonalny. Wartość elementu ETag.

Określ wartość ETag dla tego nagłówka warunkowego, aby zapisać stronę tylko wtedy, gdy wartość ETag obiektu blob nie jest zgodna z określoną wartością. Jeśli wartości są identyczne, usługa Blob service zwraca kod stanu 412 (Warunek wstępny nie powiodło się).
x-ms-encryption-scope Opcjonalny. Wskazuje zakres szyfrowania używany do szyfrowania zawartości źródłowej. Ten nagłówek jest obsługiwany w wersji 2019-02-02 i nowszej.
x-ms-client-request-id Opcjonalny. Udostępnia nieprzezroczystą wartość wygenerowaną przez klienta z limitem znaków 1-kibibyte (KiB), który jest rejestrowany w dziennikach podczas konfigurowania rejestrowania. Zdecydowanie zalecamy używanie tego nagłówka do korelowania działań po stronie klienta z żądaniami odbieranymi przez serwer. Aby uzyskać więcej informacji, zobacz Monitorowanie Azure Blob Storage.

Ta operacja obsługuje również używanie nagłówków warunkowych do wykonywania operacji tylko wtedy, gdy zostanie spełniony określony warunek. Aby uzyskać więcej informacji, zobacz Określanie nagłówków warunkowych dla operacji usługi Blob Service.

Nagłówki żądań (klucze szyfrowania dostarczone przez klienta)

Od wersji 2019-02-02 można określić następujące nagłówki na żądanie szyfrowania obiektu blob zaszyfrowanego przy użyciu klucza dostarczonego przez klienta. Szyfrowanie przy użyciu klucza dostarczonego przez klienta (i odpowiedniego zestawu nagłówków) jest opcjonalne.

Nagłówek żądania Opis
x-ms-encryption-key Wymagane. Klucz szyfrowania AES-256 zakodowany w formacie Base64.
x-ms-encryption-key-sha256 Wymagane. Skrót SHA256 zakodowany w formacie Base64 klucza szyfrowania.
x-ms-encryption-algorithm: AES256 Wymagane. Określa algorytm do użycia do szyfrowania. Wartość tego nagłówka musi mieć wartość AES256.

Treść żądania

Treść żądania zawiera zawartość strony.

Przykładowe żądanie

  
Request Syntax:  
PUT https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=page HTTP/1.1  
  
Request Headers:   
x-ms-date: Fri, 16 Sep 2011 22:15:50 GMT  
x-ms-version: 2018-11-09  
x-ms-range: bytes=0-65535  
x-ms-copy-source: https://myaccount.blob.core.windows.net/mycontainer/myblob
x-ms-source-range: bytes=0-65535
Authorization: SharedKey myaccount:4KdWDiTdA9HmIF9+WF/8WfYOpUrFhieGIT7f0av+GEI=  
Content-Length: 0  
  

Reakcja

Odpowiedź zawiera kod stanu HTTP i zestaw nagłówków odpowiedzi.

Kod stanu

Operacja zakończona powodzeniem zwraca kod stanu 201 (utworzono).

Aby uzyskać więcej informacji na temat kodów stanu, zobacz Kody stanu i błędów.

Nagłówki odpowiedzi

Odpowiedź na tę operację zawiera następujące nagłówki. Odpowiedź może również zawierać dodatkowe standardowe nagłówki HTTP. Wszystkie nagłówki standardowe są zgodne ze specyfikacją protokołu HTTP/1.1.

Składnia Opis
ETag Element ETag dla obiektu blob. Jeśli wersja żądania to 2011-08-18 lub nowsza, wartość ETag jest ujęta w cudzysłów. Element ETag może służyć do wykonywania operacji warunkowej Put Page From URL , określając jej wartość nagłówka If-Match lub If-None-Match żądania.
Last-Modified Data i godzina ostatniej modyfikacji obiektu blob. Format daty jest zgodny z RFC 1123. Aby uzyskać więcej informacji, zobacz Reprezentacja wartości daty/godziny w nagłówkach.

Każda operacja zapisu w obiekcie blob, w tym aktualizacje metadanych lub właściwości obiektu blob, zmienia czas ostatniej modyfikacji obiektu blob.
Content-MD5 Zwrócono, aby klient mógł sprawdzić integralność zawartości komunikatu. Wartość tego nagłówka jest obliczana przez usługę Blob Service. Niekoniecznie jest taka sama jak wartość określona w nagłówkach żądania. W przypadku wersji 2019-02-02 lub nowszej ten nagłówek jest zwracany tylko wtedy, gdy żądanie ma ten nagłówek.
x-ms-content-crc64 W wersji 2019-02-02 lub nowszej. Zwrócono, aby klient mógł sprawdzić integralność zawartości komunikatu. Wartość tego nagłówka jest obliczana przez usługę Blob Service. Niekoniecznie jest taka sama jak wartość określona w nagłówkach żądania.

Ten nagłówek jest zwracany, gdy x-ms-source-content-md5 nagłówek nie jest obecny w żądaniu.
x-ms-blob-sequence-number Bieżący numer sekwencji dla stronicowego obiektu blob.
x-ms-request-id Jednoznacznie identyfikuje wykonane żądanie i może służyć do rozwiązywania problemów z żądaniem. Aby uzyskać więcej informacji, zobacz Rozwiązywanie problemów z operacjami interfejsu API.
x-ms-version Wskazuje wersję usługi Blob Service, która została użyta do wykonania żądania. Ten nagłówek jest zwracany dla żądań, które zostały wykonane w wersji 2009-09-19 lub nowszej.
Date Wartość daty/godziny UTC wygenerowana przez usługę, która wskazuje godzinę zainicjowania odpowiedzi.
x-ms-request-server-encrypted: true/false Wersja 2015-12-11 lub nowsza. Wartość tego nagłówka jest ustawiana na true wartość , jeśli zawartość żądania zostanie pomyślnie zaszyfrowana przy użyciu określonego algorytmu i false w inny sposób.
x-ms-encryption-key-sha256 Wersja 2019-02-02 lub nowsza. Zwrócone, jeśli żądanie użyło klucza dostarczonego przez klienta do szyfrowania, aby klient mógł upewnić się, że zawartość żądania została pomyślnie zaszyfrowana przy użyciu podanego klucza.
x-ms-encryption-scope Wersja 2019-02-02 lub nowsza. Zwrócone, jeśli żądanie użyło zakresu szyfrowania, aby klient mógł upewnić się, że zawartość żądania została pomyślnie zaszyfrowana przy użyciu zakresu szyfrowania.
x-ms-client-request-id Może służyć do rozwiązywania problemów z żądaniami i odpowiadającymi im odpowiedziami. Wartość tego nagłówka jest równa wartości x-ms-client-request-id nagłówka, jeśli znajduje się w żądaniu, a wartość nie zawiera więcej niż 1024 widocznych znaków ASCII. x-ms-client-request-id Jeśli nagłówek nie jest obecny w żądaniu, nie będzie on obecny w odpowiedzi.

Treść odpowiedzi

Brak.

Przykładowa odpowiedź

Response Status:  
HTTP/1.1 201 Created  
  
Response Headers:  
Transfer-Encoding: chunked  
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  
  

Autoryzacja

Autoryzacja jest wymagana podczas wywoływania dowolnej operacji dostępu do danych w usłudze Azure Storage. Możesz autoryzować operację zgodnie z Put Page From URL poniższym opisem.

Ważne

Firma Microsoft zaleca używanie Tożsamość Microsoft Entra z tożsamościami zarządzanymi w celu autoryzowania żądań do usługi Azure Storage. Tożsamość Microsoft Entra zapewnia doskonałe zabezpieczenia i łatwość użycia w porównaniu z autoryzacją klucza współdzielonego.

Usługa Azure Storage obsługuje autoryzację żądań do danych obiektów blob przy użyciu Tożsamość Microsoft Entra. Dzięki Tożsamość Microsoft Entra możesz użyć kontroli dostępu opartej na rolach (RBAC) platformy Azure, aby udzielić uprawnień podmiotowi zabezpieczeń. Podmiot zabezpieczeń może być użytkownikiem, grupą, jednostką usługi aplikacji lub tożsamością zarządzaną platformy Azure. Podmiot zabezpieczeń jest uwierzytelniany przez Tożsamość Microsoft Entra w celu zwrócenia tokenu OAuth 2.0. Token może następnie służyć do autoryzowania żądania względem usługi Blob Service.

Aby dowiedzieć się więcej na temat autoryzacji przy użyciu Tożsamość Microsoft Entra, zobacz Autoryzowanie dostępu do obiektów blob przy użyciu Tożsamość Microsoft Entra.

Uprawnienia

Poniżej przedstawiono akcję RBAC niezbędną dla użytkownika Microsoft Entra, grupy, tożsamości zarządzanej lub jednostki usługi w celu wywołania Put Page From URL operacji oraz najmniej uprzywilejowanej wbudowanej roli RBAC platformy Azure, która obejmuje tę akcję:

Aby dowiedzieć się więcej na temat przypisywania ról przy użyciu kontroli dostępu opartej na rolach platformy Azure, zobacz Przypisywanie roli platformy Azure w celu uzyskania dostępu do danych obiektów blob.

Uwagi

Operacja Put Page From URL zapisuje zakres stron w stronicowym obiekcie blob. Tę operację można wywołać tylko w istniejącym stronicowym obiekcie blob. Nie można go wywołać w celu utworzenia nowego stronicowego obiektu blob ani wywołać go w blokowym obiekcie blob. Wywołanie Put Page From URL przy użyciu nazwy obiektu blob, który obecnie nie istnieje, zwraca błąd BlobNotFound (kod stanu HTTP 404 — Nie znaleziono).

W wersji 2020-10-02 lub nowszej autoryzacja Microsoft Entra jest obsługiwana dla źródła operacji kopiowania.

Aby utworzyć nowy stronicowy obiekt blob, wywołaj metodę Put Blob i określ typ obiektu blob do utworzenia jako stronicowy obiekt blob. Rozmiar stronicowego obiektu blob może wynosić do 8 TiB.

Jeśli obiekt blob ma aktywną dzierżawę, klient musi określić prawidłowy identyfikator dzierżawy w żądaniu, aby zapisać stronę.

Operacje aktualizacji strony

Wywołanie Put Page From URL wykonuje zapis w miejscu w określonym stronicowym obiekcie blob. Każda zawartość na określonej stronie zostanie zastąpiona aktualizacją.

Ważne

Jeśli upłynął limit czasu serwera lub połączenie zostało zamknięte podczas , Put Page From URLstrona może lub nie została zaktualizowana. W związku z tym należy kontynuować ponawianie próby aktualizacji do momentu otrzymania odpowiedzi wskazującej powodzenie.

Każdy zakres stron przesłanych Put Page From URL dla operacji aktualizacji może mieć rozmiar do 4 MiB. Zakres początkowy i końcowy strony musi być wyrównany do granic 512-bajtowych. Jeśli spróbujesz przekazać zakres stron o rozmiarze większym niż 4 miB, usługa zwróci kod stanu 413 (Zbyt duża jednostka żądania).

Zarządzanie problemami ze współbieżnością

Usługa Blob obsługuje równoczesne zapisy na nakładających się stronach sekwencyjnie. Oznacza to, że ostatnia strona przetworzona przez usługę określa zawartość obiektu blob. W związku z tym, aby zapewnić integralność zawartości obiektu blob, klient powinien obsługiwać zapisy na nakładających się stronach przy użyciu co najmniej jednej z następujących metod:

  • Możesz sprawdzić wartość nagłówka odpowiedzi dla każdego pomyślnego Last-Modified wywołania metody Put Page From URL. Kolejność odpowiedzi zwróconych z usługi Blob Service nie musi odpowiadać kolejności, w jakiej zostały wykonane przez usługę. Jednak wartość Last-Modified zawsze wskazuje kolejność przetwarzania żądań przez usługę.

  • Aktualizacje można wykonywać warunkowo na podstawie elementu ETag obiektu blob lub czasu ostatniej modyfikacji przy użyciu optymistycznej współbieżności. Takie podejście sprawdza się, jeśli liczba współbieżnych zapisów jest stosunkowo niska. W tym celu użyj nagłówków żądań warunkowych If-Match, If-None-Match, If-Modified-Sincei If-Unmodified-Since .

  • Obiekt blob dzierżawy można wywołać, aby zablokować obiekt blob względem innych zapisów przez jedną minutę lub dłużej, jeśli dzierżawa zostanie odnowiona.

  • Możesz użyć numeru sekwencji obiektu blob, aby upewnić się, że ponawianie żądania, dla którego nie było odpowiedzi, nie powoduje współbieżnych aktualizacji. Takie podejście może być najlepsze w przypadku klientów wymagających wysokiej przepływności w przypadku zapisów stron. Opisano je szczegółowo w poniższej sekcji.

Użyj stronicowego numeru sekwencji obiektów blob do ponawiania żądań

Gdy wywołanie powoduje Put Page From URL przekroczenie limitu czasu lub nie zwraca odpowiedzi, nie ma możliwości ustalenia, czy żądanie zakończyło się pomyślnie. W związku z tym należy ponowić próbę wykonania żądania, ale ze względu na rozproszony charakter usług Azure Storage możliwe jest przetworzenie oryginalnego żądania po pomyślnym wykonaniu żądania. Opóźnione oryginalne żądanie może zastąpić inne aktualizacje i spowodować nieoczekiwany wynik. Poniższa sekwencja ilustruje, jak to może się zdarzyć:

  1. Żądanie Put Page From URL zapisania wartości "X" na stronie 0 razy lub nie zwraca odpowiedzi.

  2. Ponowienia żądania zapisu wartości "X" do strony 0 powiodło się.

  3. Żądanie zapisu wartości "Y" do strony 0 kończy się powodzeniem.

  4. Oryginalne żądanie powiedzie się, zapisują wartość "X" do strony 0.

  5. Odczytywanie strony 0 zwraca wartość "X", gdy w tym momencie klient oczekiwał wartości "Y".

Ten rodzaj konfliktu może wystąpić, gdy oryginalne żądanie nie zwraca kodu stanu z zakresu od 100 do 499 lub 503 (serwer zajęty). Jeśli zostanie zwrócony jeden z tych kodów stanu, możesz mieć pewność, czy żądanie zakończyło się powodzeniem, czy niepowodzeniem. Jeśli jednak usługa zwróci kod stanu poza tym zakresem, nie ma możliwości poznania stanu oryginalnego żądania.

Aby zapobiec tego rodzaju konfliktom, możesz użyć numeru sekwencji stronicowego obiektu blob, aby upewnić się, że po ponowieniu żądania oryginalne żądanie nie powiedzie się później. W tym celu należy zwiększać numer sekwencji przed ponowieniem próby wykonania oryginalnego żądania. Następnie można użyć nagłówków numeru sekwencji warunkowej, aby upewnić się, że żądanie zakończy się niepowodzeniem, jeśli jego numer sekwencji nie jest zgodny z oczekiwanym numerem sekwencji. Poniższa sekwencja ilustruje to podejście:

  1. Klient tworzy stronicowy obiekt blob z funkcją Put Blob i ustawia numer sekwencji na 0.

  2. Żądanie Put Page From URL zapisania wartości "X" do strony 0 z nagłówkiem if-sequence-number-lt ustawionym na 1 limit czasu lub nie zwraca odpowiedzi.

  3. Klient wywołuje polecenie Ustaw właściwości obiektu blob, aby zaktualizować numer sekwencji do 1.

  4. Ponawiane żądanie zapisu wartości "X" do strony 0 z if-sequence-number-lt ustawionym na 2 powodzenie.

  5. Żądanie zapisu wartości "Y" na stronę 0 z if-sequence-number-lt ustawionym na 2 powodzenie.

  6. Oryginalne żądanie jest ostatecznie przetwarzane, ale kończy się niepowodzeniem, ponieważ określa warunek, że numer sekwencji musi być mniejszy niż 1 (oznacza to, if-sequence-num-lt że nagłówek jest ustawiony na 1wartość ). Błąd to SequenceNumberConditionNotMet (kod stanu HTTP 412 — Niepowodzenie warunku wstępnego).

  7. Odczytywanie strony 0 zwraca oczekiwaną wartość "Y".

Zobacz też

Autoryzowanie żądań do usługi Azure Storage
Kody stanu i błędów
Ustawianie limitów czasu dla operacji usługi Blob Service