Angeben des Bereichsheaders für Blobdienstvorgänge
Einige GET-Vorgänge für Blob-Dienste unterstützen die Verwendung des HTTP-Range
-Standardheaders. Viele HTTP-Clients, einschließlich der .NET-Clientbibliothek, beschränken die Größe des Range
Headers auf eine ganze 32-Bit-Zahl, sodass ihr Wert auf maximal 4 GiB beschränkt ist. Da sowohl Blockblobs als auch Seitenblobs größer als 4 GiB sein können, akzeptiert der Blob-Dienst einen benutzerdefinierten Bereichsheader x-ms-range
für jeden Vorgang, der einen HTTP-Header Range
verwendet.
Einige HTTP-Clients, einschließlich der Microsoft Silverlight-Bibliothek, beschränken den Zugriff auf den Range
-Header vollständig. Der x-ms-range
-Header kann auch verwendet werden, um diese Einschränkungen zu umgehen.
Wenn der x-ms-range
-Header für eine Anforderung angegeben ist, verwendet der Dienst den von x-ms-range
angegebenen Bereich. Andernfalls wird der vom Range
-Header angegebene Bereich verwendet.
Hinweis
Die Azure-Speicherclientbibliothek übernimmt automatisch das Festlegen des entsprechenden Bereichsheaders für die Anforderung, wenn Sie die Range
-Eigenschaft des PutPageProperties
-Objekts festlegen.
Formate von Bereichsheadern
Der Blob-Dienst akzeptiert zwei Bytebereiche für den Range
-Header und den x-ms-range
-Header. Der Bytebereich muss einem der folgenden Formate für die Header entsprechen:
bytes=startByte-
für Anforderungen mit Version 2011-08-18 oder neuerbytes=startByte-endByte
für Anforderungen mit allen Versionen (2009-04-14 bis zur aktuellen Version)
Format 1: bytes=startByte-
Das erste Format, bytes=startByte-
, ist nur für Anforderungen mit Version 2011-08-18 oder neuer oder für den Speicheremulatordienst in SDK 1.6 oder höher verfügbar. Dieser Bereich gibt Bytes vom startByte
-Offset bis zum Ende des BLOB zurück. Um beispielsweise einen Bereich anzugeben, der alle Bytes nach den ersten 256 Bytes eines BLOB umfasst, können Sie einen der folgenden Header übergeben:
Range: bytes=255-
x-ms-range: bytes=255-
Der Content-Length
-Header in der Antwort entspricht der Anzahl der Bytes vom Offset bis zum Ende des BLOB. Bei Verwendung des oben gezeigten Beispielbereichs für ein BLOB mit einer Länge von 1024 Bytes hätte Content-Length
den Wert 756.
Wenn der Offset gültig ist und die Gesamtlänge des BLOBs nicht überschreitet, gibt die Anforderung den Statuscode 206 (Teilinhalt) zurück. Wenn der Offset ungültig ist und die Gesamtlänge des BLOBs überschreitet, gibt die Anforderung den Statuscode 416 (Angeforderter Bereich kann nicht erfüllt werden) zurück.
Format 2: bytes=startByte-endByte
Das zweite Format, bytes=startByte-endByte
, ist für Anforderungen mit allen Versionen (2009-04-14 bis zur aktuellen Version) und für alle Versionen des Speicheremulatordiensts verfügbar. Dieser Bereich gibt Bytes vom startByte
-Offset bis endByte
zurück. Um beispielsweise einen Bereich anzugeben, der die ersten 512 Bytes eines BLOB umfasst, übergeben Sie einen der folgenden Header:
Range: bytes=0-511
x-ms-range: bytes=0-511
Der Content-Length
-Header in der Antwort entspricht der Anzahl von Bytes zwischen den einzelnen Offsets. Die Verwendung des obigen Beispielbereichs für ein Blob mit einer Länge Content-Length
von 1.024 Bytes wäre 512.
Wenn der Offset gültig ist und die Gesamtlänge des BLOBs nicht überschreitet, gibt die Anforderung den Statuscode 206 (Teilinhalt) zurück. Wenn der Offset ungültig ist und die Gesamtlänge des BLOBs überschreitet, gibt die Anforderung den Statuscode 416 (Angeforderter Bereich kann nicht erfüllt werden) zurück.
Weitere Informationen
Blob Service-Konzepte
Versioning for the Azure Storage Services (Versionsverwaltung für Azure Storage-Dienste)