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

如何用Azure SDK for .NET获取Azure订阅中所有App Service Plan配置

获取Azure订阅中App Service Hosting Plan的SKU配置(.NET 8实现)

需求

  • 使用Azure SDK for .NET实现
  • 运行环境为.NET 8.0 Windows控制台应用
  • 已持有SubscriptionResource对象,示例中以subscription指代

预期目标

获取与Azure门户展示一致的App Service Hosting Plan SKU数据(包含Tier、Size、Family等信息),预期代码及输出如下:

预期代码

var skus = await AppServiceExtensions.GetSkusAsync(subscription);

if (hostingPlanSkus != null)
{
    Console.WriteLine("Available App Service SKUs:");
    foreach (var sku in hostingPlanSkus)
    {
        Console.WriteLine($"Tier: {sku.Tier}, Name: {sku.Name}, Size: {sku.Size}, Family: {sku.Family}");
    }
}

预期输出

Available App Service SKUs:
Tier: Free, Name: Free, Size: F1, Family: F
Tier: Basic, Name: Basic1, Size: B1, Family: B
Tier: Standard, Name: Standard1, Size: S1, Family: S
Tier: PremiumV2, Name: PremiumV2_1, Size: P1v2, Family: Pv2

已尝试方案

  1. 调用GetSkusAsync()始终返回null,更换不同订阅结果一致,代码如下:
var skus = await AppServiceExtensions.GetSkusAsync(subscription);
foreach (var sku in skus.Value.Skus)
{
        Console.WriteLine($"- Tier: {sku.Tier}, Size: {sku.Size}, Name: {sku.Name}");
}
  1. 尝试使用MockableAppServiceSubscriptionResource,但无法生成可调用GetSkusAsync的对象。

解决方案

正确实现代码

首先确保安装NuGet包:Azure.ResourceManager.AppService

使用SubscriptionResource的GetAppServiceSkusAsync方法获取SKU数据,这是Azure SDK for .NET的标准用法:

using Azure.ResourceManager.AppService;
using Azure.ResourceManager.Resources;
using System.Linq;

// 假设已通过认证获取到SubscriptionResource实例subscription
var skuCollection = await subscription.GetAppServiceSkusAsync().ToListAsync();

Console.WriteLine("Available App Service SKUs:");
foreach (var sku in skuCollection)
{
    Console.WriteLine($"Tier: {sku.Tier}, Name: {sku.Name}, Size: {sku.Size}, Family: {sku.Family}");
}

按位置过滤SKU(可选)

不同Azure区域的可用SKU可能存在差异,若需获取指定区域的SKU,可传入位置参数:

var targetLocation = "East US";
var skuCollection = await subscription.GetAppServiceSkusAsync(targetLocation).ToListAsync();

问题说明

  • 之前调用的AppServiceExtensions.GetSkusAsync并非正确的扩展方法,标准SDK中SubscriptionResource提供的GetAppServiceSkusAsync才是获取App Service SKU的正确入口。
  • MockableAppServiceSubscriptionResource仅用于单元测试场景,生产环境应直接使用通过Azure认证获取的SubscriptionResource实例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 11:13:12