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

使用Azure SDK for .NET的ARM客户端获取VM数据遇超时问题求助

解决GetComputeResourceSkusAsync超时错误的建议

核心问题分析

你遇到的坏网关超时,大概率是因为示例使用的2021-07-01版本Compute API已过时,加上默认客户端配置未适配大规模SKU列表的请求延迟。以下是具体解决步骤:

1. 升级Azure Compute SDK至最新稳定版

旧示例依赖的SDK版本可能未包含后续修复的超时处理、重试逻辑。更新NuGet包Azure.ResourceManager.Compute到当前最新稳定版,新版SDK会默认使用更兼容的API版本,同时优化了请求流控和错误重试。

2. 自定义客户端超时与重试策略

默认的ArmClient配置可能不足以应对SKU列表请求的延迟,可通过ArmClientOptions调整超时和重试规则:

// 配置客户端选项,增加超时和重试次数
var options = new ArmClientOptions
{
    Retry =
    {
        MaxRetries = 5,
        Delay = TimeSpan.FromSeconds(2),
        MaxDelay = TimeSpan.FromSeconds(10),
        Mode = RetryMode.Exponential
    },
    Transport = new HttpClientTransport(new HttpClient
    {
        Timeout = TimeSpan.FromMinutes(5) // 延长请求超时时间
    })
};

// 使用配置后的选项初始化ArmClient
ArmClient client = new ArmClient(cred, options);

3. 显式指定最新API版本

若升级SDK后仍有问题,可强制指定最新的Compute API版本(当前稳定版为2024-03-01),确保请求与Azure后端兼容:

// 在调用GetComputeResourceSkusAsync时指定API版本
await foreach (ComputeResourceSku item in subscriptionResource.GetComputeResourceSkusAsync(apiVersion: "2024-03-01"))
{
    Console.WriteLine($"SKU Name: {item.Name}");
}

4. 验证权限与网络环境

  • 确认你的服务主体/用户账户拥有Microsoft.Compute/skus/read权限(可通过Azure RBAC配置)
  • 检查网络是否能正常访问Azure ARM服务端点(无代理拦截、防火墙限制)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 06:42:41