You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Cost Management API日期筛选器不生效问题求助

解决Azure Consumption API忽略日期区间的问题

针对调用Azure Consumption usageDetails API时,指定startDate和endDate却返回当月1日至当前日期数据的问题,可从以下几个方向排查解决:

1. 调整API参数的筛选方式

Azure Consumption的usageDetails API中,部分场景下startDate/endDate参数的优先级较低,建议改用$filter参数精确指定日期范围,示例请求结构:

https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Consumption/usageDetails?$filter=properties/usageStart ge '2023-06-01' and properties/usageStart le '2023-06-02'&api-version=2021-10-01

注意:日期值需用单引号包裹,且格式严格遵循YYYY-MM-DD(API默认使用UTC时间)。

2. 检查.NET请求的参数传递逻辑

确保代码中日期参数未被错误覆盖或编码异常:

  • 避免手动拼接URL,推荐用HttpValueCollection构建查询参数,防止编码错误
  • .NET示例代码:
using System.Net.Http;
using System.Net.Http.Headers;
using System.Web;

var subscriptionId = "你的订阅ID";
var startDate = "2023-06-01";
var endDate = "2023-06-02";
var apiVersion = "2021-10-01";

var queryParams = new HttpValueCollection();
queryParams.Add("$filter", $"properties/usageStart ge '{startDate}' and properties/usageStart le '{endDate}'");
queryParams.Add("api-version", apiVersion);

var requestUrl = $"https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Consumption/usageDetails?{queryParams}";

using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "你的访问令牌");
var response = await client.GetAsync(requestUrl);
response.EnsureSuccessStatusCode();
var content = await response.Content.ReadAsStringAsync();

3. 验证API版本兼容性

你当前使用的api-version=2021-10-01为稳定版本,但可尝试升级至最新稳定版(如2023-03-01),部分旧版本存在参数解析的已知问题。

4. 确认订阅类型的权限与限制

  • 若为EA(企业协议)订阅,需确保调用账号拥有Consumption.Read或CostManagement.Read权限,部分EA场景需通过专属端点调整筛选逻辑
  • 若为CSP(云解决方案提供商)订阅,需验证是否具备跨租户数据访问的权限配置

内容的提问来源于stack exchange,提问作者Carlos Zamora

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 04:40:11