你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure 存储的版本控制

Azure 存储支持多个版本。 若要针对存储服务发出请求,必须指定要用于该操作的版本,除非请求是匿名的。

截至 2025 年 6 月 5 日,Azure 存储服务的最新完全部署版本为 2025-11-052025-07-05 并且 2025-05-05 也被广泛部署,如下表所示。 所有版本均为 GA 质量。

如果表指示在某个区域中启用了 , x-ms-version 则所有先前 x-ms-versions 的 也会启用。 尝试使用未在存储帐户区域中完全部署的服务版本可能会生成 x-ms-version 不匹配错误

x-ms-version 区域可用性 SDK 支持
2025-05-05 亚洲东部
亚洲东南亚
澳大利亚
澳大利亚C2
澳大利亚东部
澳大利亚东南部
奥地利
比利时
巴西
巴西南部
canadacentral
加拿大东部
智利
丹麦
欧洲北部
欧洲西部
法国
弗朗西斯
德国
德国WC
印度中部
印度南部
印度西部
印度尼西亚
以色列
以色列
意大利
日本东部
日本西部
吉奥因克
真棒
韩国中央
韩国南方
马来西亚
马来西亚
墨西哥
新西兰
挪威
挪威
波兰
卡塔尔
南非
南非
西班牙
瑞典
瑞典
瑞士
瑞士
台湾
台湾西北
阿联酋
UAEN
英国南方
英国西部
美国中央
USCENTRALEUAP
美国东部
USEAST2
USEAST2EUAP
美国北方
美国南方
USSOUTH2
美国东南
美国东南部3
美国东南 5
美国西南航空
USWEST
USWEST2
USWEST3
USWESTCENTRAL
最新 GA
2025-07-05 澳大利亚
澳大利亚C2
澳大利亚东部
奥地利
比利时
巴西
巴西南部
canadacentral
加拿大东部
智利
丹麦
欧洲北部
欧洲西部
法国
弗朗西斯
德国
德国WC
印度中部
印度南部
印度西部
印度尼西亚
以色列
以色列
意大利
日本东部
日本西部
吉奥因克
真棒
韩国南方
马来西亚
马来西亚
墨西哥
新西兰
挪威
挪威
波兰
卡塔尔
南非
西班牙
瑞典
瑞典
瑞士
瑞士
台湾
台湾西北
阿联酋
UAEN
英国南方
英国西部
USCENTRALEUAP
USSOUTH2
美国东南
美国东南部3
美国东南 5
美国西南航空
USWESTCENTRAL
Beta 版本
2025-11-05 澳大利亚
澳大利亚C2
澳大利亚东部
比利时
巴西
巴西南部
智利
丹麦
法国
弗朗西斯
德国WC
印度中部
印度南部
印度西部
印度尼西亚
以色列
意大利
日本东部
吉奥因克
真棒
韩国南方
马来西亚
马来西亚
墨西哥
新西兰
挪威
波兰
卡塔尔
西班牙
瑞典
瑞典
瑞士
瑞士
台湾
台湾西北
阿联酋
UAEN
英国西部
USSOUTH2
美国东南
美国东南部3
美国东南 5
美国西南航空
USWESTCENTRAL
Beta 版本

可以在下表的更改日志中找到 Azure 存储数据平面 SDK 使用的默认值 x-ms-version

Blob 服务 ADLS 第 2 代 文件服务 队列服务
。网 Azure.Storage.Blobs Azure.Storage.Files.DataLake Azure.Storage.Files.Shares Azure.Storage.Queues
爪哇岛 azure-storage-blob azure-storage-file-datalake Azure 存储文件共享 azure-storage-queue (英语)
Python语言 azure-storage-blob azure-storage-file-datalake Azure 存储文件共享 azure-storage-queue (英语)
Javascript 存储 blob 存储文件数据湖 存储文件共享 存储队列
C++ azure-storage-blobs azure-storage-files-datalake azure-storage-files-shares azure-storage-queues
GoLang 语言 azblob AZataLake azfile azqueue

数据层面存储 SDK 不会对其他官方软件包源执行 GA 版本,直到相关版本的默认值 x-ms-version 在所有区域完全推出。 因此,官方包管理器提供的最新 GA SDK 版本可以在任何区域安全使用。

Azure 存储服务的最新版本是 2025-11-05,建议尽可能使用它。 有关所有其他受支持版本的列表以及有关使用每个版本的信息,请参阅 以前的 Azure 存储服务版本

2025-11-05 服务版本包含如下功能:

在请求中指定服务版本

如何指定要用于请求的存储服务版本与请求的授权方式相关。 以下各节介绍了授权选项以及如何为每个选项指定服务版本。

  • 使用来自 Microsoft Entra的 OAuth 2.0 令牌的请求:若要使用 Microsoft Entra ID 授权请求,请使用服务版本 2017-11-09 或更高版本在请求上传递 x-ms-version 标头。 有关详细信息,请参阅 使用 OAuth 令牌 调用存储作,使用 Microsoft Entra ID授权。

  • 使用共享密钥或共享密钥 Lite 的请求:若要使用共享密钥或共享密钥 Lite 授权请求,请在请求中传递 x-ms-version 标头。 使用 Azure Blob 存储时,可以通过调用 Set Blob Service Properties 来指定所有请求的默认版本。

  • 使用共享访问签名(SAS)的请求:可以在共享访问签名上指定两个版本控制选项。 可选的 api-version 标头指示用于执行 API作的服务版本。 必需的 SignedVersion (sv) 参数指定用于授权使用 SAS 发出的请求的服务版本。 如果未指定 api-version 标头,则 SignedVersion (sv) 参数的值也指示用于执行 API作的版本。

  • 使用匿名访问的请求:对 Blob 存储使用匿名访问时,不会传入任何版本。 下一节介绍了确定要用于请求的版本的启发式。

使用 Microsoft Entra ID、共享密钥或共享密钥 Lite 授权请求

若要使用 Microsoft Entra ID、共享密钥或共享密钥 Lite 授权请求,请在请求上指定 x-ms-version 标头。 x-ms-version 请求标头值必须采用 YYYY-MM-DD 格式指定。 例如:

Request Headers:  
x-ms-version: 2020-04-08

以下规则描述如何评估这些请求,以确定用于处理请求的版本。

  • 如果请求具有有效的 x-ms-version 标头,则存储服务使用指定的版本。 对不使用共享访问签名的 Azure 表存储和 Azure 队列存储的所有请求都必须指定 x-ms-version 标头。 所有不使用共享访问签名的 Blob 存储请求都必须指定标头, x-ms-version 除非设置了默认版本,如下一段所述。

  • 如果对 Blob 存储的请求不包含 x-ms-version 标头,但帐户所有者使用 “设置 Blob 服务属性 ”作设置了默认版本,则指定的默认版本将用作请求的版本。

使用共享访问签名授权请求

使用版本 2014-02-14 或更高版本生成的共享访问签名(SAS)支持两种版本控制选项:

  • api-version 查询参数定义用于处理使用 SAS 发出的请求的 REST 协议版本。

  • SignedVersion (sv) 查询参数定义用于授权的 SAS 版本。

当客户端使用 SAS 发出请求时,SignedVersion 查询参数用于授权。 授权参数(如 sisrspsigstsetnspksrkepkerk)均使用指定版本进行解释。

REST 协议参数(如 rscc、 、 rscerscdrscl、 和 rsct )通过使用参数标头中提供的api-version版本来实施。 如果未指定标头, api-version 则使用 for SignedVersion 提供的服务版本。

api-version 参数不是授权标头字符串登录的一部分,如 创建服务 SAS中所述。

下表说明了服务用于授权的版本控制方案,并将 SignedVersion 参数设置为版本 2014-02-14 或更高版本时调用 REST 协议。

api 版本 参数的值 用于授权的版本 用于协议行为的版本
未指定 sv 参数中指定的版本 sv 参数中指定的版本
格式为 XXXX-XX-XX 的任何有效存储服务版本 sv 参数中指定的版本 有效的存储服务版本 XXXX-XX-XX

示例 1

以下示例请求使用 调用 sv=2015-04-05,而不调用 api-version 参数。

https://myaccount.blob.core.windows.net/mycontainer?restype=container&comp=list&sv=2015-04-05&si=readpolicy&sig=a39 %2BYozJhGp6miujGymjRpN8tsrQfLo9Z3i8IRyIpnQ%3d

在这种情况下,服务使用版本 2015-04-05 对请求进行身份验证和授权,并使用版本 2015-04-05 运行该操作。

示例 2

以下示例请求调用 列出 Blob。

https://myaccount.blob.core.windows.net/mycontainer?restype=container&comp=list&sv=2015-04-05&si=readpolicy&sig=a39 %2BYozJhGp6miujGymjRpN8tsrQfLo9Z3i8IRyIpnQ%3d&api-version=2012-02-12

在这里,服务使用版本 2015-04-05 授权请求,并使用版本 2012-02-12 运行该操作。

注意

.NET 存储客户端库始终将 REST 协议版本(在参数中 api-version )设置为基本版本。

通过匿名访问的请求

通过匿名访问发出的请求的处理方式不同,具体取决于它们针对的存储帐户的类型。

常规用途存储帐户

如果对常规用途存储帐户的匿名请求未指定 x-ms-version 标头,并且未使用 设置 Blob 服务属性设置服务的默认版本,则服务将使用尽可能早的版本来处理请求。 如果容器是使用版本 2009-09-19 或更高版本的 Set Container ACL 作公开的,则使用版本 2009-09-19 处理请求。

对于 Blob 存储帐户

如果对 Blob 存储帐户的匿名请求未指定 x-ms-version 标头,并且未使用 “设置 Blob 服务属性”设置服务的默认版本,则服务将使用尽可能早的版本来处理请求。 对于 Blob 存储帐户,最早的版本为 2014-02-14。

已知问题

本部分详细介绍了 Azure 存储 REST API 的已知问题。

InvalidHeaderValue 错误消息

在极少数情况下,进行直接 REST API 调用的应用程序可能会收到 InvalidHeaderValue 错误消息。 此错误类似于以下示例:

HTTP/1.1 400 The value for one of the HTTP headers is not in the correct format.
Content-Length: 328
Content-Type: application/xml
Server: Microsoft-HTTPAPI/2.0
x-ms-request-id: <REMOVED>
Date: Fri, 19 May 2023 17:10:33 GMT
 
<?xml version="1.0" encoding="utf-8"?><Error><Code>InvalidHeaderValue</Code><Message>The value for one of the HTTP headers is not in the correct format.
RequestId:<REMOVED>
Time:2023-05-19T17:10:34.2972651Z</Message><HeaderName>x-ms-version</HeaderName><HeaderValue>yyyy-mm-dd</HeaderValue></Error> 

建议使用早期的 REST API 版本尝试解决此问题。 如果问题仍然存在,或者建议不可行,请 打开支持票证 以讨论更多选项。

另请参阅