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 neuer

  • bytes=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)