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ę:
- Akcja RBAC platformy Azure:Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
- Najmniej uprzywilejowana wbudowana rola:Współautor danych obiektu blob usługi Storage
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 URL
strona 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 metodyPut 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-Since
iIf-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ć:
Żądanie
Put Page From URL
zapisania wartości "X" na stronie 0 razy lub nie zwraca odpowiedzi.Ponowienia żądania zapisu wartości "X" do strony 0 powiodło się.
Żądanie zapisu wartości "Y" do strony 0 kończy się powodzeniem.
Oryginalne żądanie powiedzie się, zapisują wartość "X" do strony 0.
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:
Klient tworzy stronicowy obiekt blob z funkcją Put Blob i ustawia numer sekwencji na 0.
Żądanie
Put Page From URL
zapisania wartości "X" do strony 0 z nagłówkiemif-sequence-number-lt
ustawionym na1
limit czasu lub nie zwraca odpowiedzi.Klient wywołuje polecenie Ustaw właściwości obiektu blob, aby zaktualizować numer sekwencji do 1.
Ponawiane żądanie zapisu wartości "X" do strony 0 z
if-sequence-number-lt
ustawionym na2
powodzenie.Żądanie zapisu wartości "Y" na stronę 0 z
if-sequence-number-lt
ustawionym na2
powodzenie.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 na1
wartość ). Błąd to SequenceNumberConditionNotMet (kod stanu HTTP 412 — Niepowodzenie warunku wstępnego).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