De bereikheader opgeven voor blobservicebewerkingen

Verschillende GET-bewerkingen voor blobservices ondersteunen het gebruik van de standaard HTTP-header Range . Veel HTTP-clients, waaronder de .NET-clientbibliotheek, beperken de grootte van de Range header tot een geheel getal van 32 bits, waardoor de waarde ervan is beperkt tot een maximum van 4 GiB. Omdat zowel blok-blobs als pagina-blobs groter kunnen zijn dan 4 GiB, accepteert de Blob-service een aangepaste bereikheader x-ms-range voor elke bewerking waarvoor een HTTP-header Range wordt gebruikt.

Sommige HTTP-clients, waaronder de Microsoft Silverlight-bibliotheek, beperken de toegang tot de Range header helemaal. De x-ms-range header kan ook worden gebruikt om deze beperkingen te omzeilen.

Als de x-ms-range header is opgegeven voor een aanvraag, gebruikt de service het bereik dat is opgegeven door x-ms-range; anders wordt het bereik gebruikt dat is opgegeven door de Range header.

Notitie

De Azure Storage-clientbibliotheek verwerkt automatisch het instellen van de juiste bereikheader voor de aanvraag wanneer u de Range eigenschap van het PutPageProperties object instelt.

Indelingen voor bereikheaders

De Blob-service accepteert twee bytebereiken voor de Range headers en x-ms-range . Het bytebereik moet voldoen aan een van de volgende indelingen voor de headers:

  • bytes=startByte- voor aanvragen met versie 2011-08-18 of hoger

  • bytes=startByte-endByte voor aanvragen met alle versies (2009-04-14 tot en met de nieuwste versie)

Notatie 1: bytes=startByte-

De eerste indeling, bytes=startByte-, is alleen beschikbaar voor aanvragen met versie 2011-08-18 of nieuwer, of de opslagemulatorservice in SDK 1.6 of hoger. Dit bereik retourneert bytes van de offset startByte tot het einde van de blob. Als u bijvoorbeeld een bereik wilt opgeven dat alle bytes na de eerste 256 bytes van een blob omvat, kunt u een van de volgende headers doorgeven:

  • Range: bytes=255-

  • x-ms-range: bytes=255-

De Content-Length header in het antwoord is gelijk aan het aantal bytes vanaf de offset tot het einde van de blob. Als u het bovenstaande voorbeeldbereik gebruikt voor een blob met een lengte van 1024 bytes, Content-Length is dat 756.

Als de offset geldig is en de totale lengte van de blob niet overschrijdt, retourneert de aanvraag de statuscode 206 (Gedeeltelijke inhoud). Als de offset ongeldig is en de totale lengte van de blob overschrijdt, retourneert de aanvraag statuscode 416 (Aangevraagd bereik niet bevredigend).

Indeling 2: bytes=startByte-endByte

De tweede indeling, bytes=startByte-endByte, is beschikbaar voor aanvragen met alle versies (2009-04-14 tot en met de nieuwste versie) en voor alle versies van de opslagemulatorservice. Dit bereik retourneert bytes van de offset startByte tot en met endByte. Als u bijvoorbeeld een bereik wilt opgeven dat de eerste 512 bytes van een blob omvat, geeft u een van de volgende headers door:

  • Range: bytes=0-511

  • x-ms-range: bytes=0-511

De Content-Length header in het antwoord is gelijk aan het aantal bytes tussen elke offset. Als u het bovenstaande voorbeeldbereik gebruikt voor een blob met een lengte van 1024 bytes, Content-Length is dat 512.

Als de offset geldig is en de totale lengte van de blob niet overschrijdt, retourneert de aanvraag de statuscode 206 (Gedeeltelijke inhoud). Als de offset ongeldig is en de totale lengte van de blob overschrijdt, retourneert de aanvraag statuscode 416 (Aangevraagd bereik niet bevredigend).

Zie ook

Concepten van blob-service
Versiebeheer voor Azure Storage Services