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

使用Azure SDK for .Net获取资源组内所有App Service的AppSettings正确方法

Azure SDK获取App Service AppSettings的正确方式

你当前的问题出在**plan.GetWebApps()返回的是WebApp资源的精简视图**,默认不会自动加载SiteConfig这类嵌套的复杂属性,所以app.SiteConfig.AppSettings才会始终为null。

要正确获取AppSettings,有两种高效的方式:


方式一:获取完整的WebApp资源实例

通过调用GetAsync()方法拉取WebApp的完整属性,就能访问SiteConfig.AppSettings:

var credentials = new InteractiveBrowserCredential(new InteractiveBrowserCredentialOptions() { TenantId = tenantid });
ArmClient client = new ArmClient(credentials);
var groupid = ResourceGroupResource.CreateResourceIdentifier(mySubscriptionID, myResourceGroupID);
var group = client.GetResourceGroupResource(groupid);

foreach(var plan in group.GetAppServicePlans())
{
    foreach(var app in plan.GetWebApps())
    {
        // 拉取完整的WebApp资源
        var fullWebApp = await app.GetAsync();
        
        // 访问AppSettings
        var appSettings = fullWebApp.SiteConfig.AppSettings;
        if (appSettings != null)
        {
            var dynamicCacheSetting = appSettings.FirstOrDefault(s => s.Name == "WEBSITE_DYNAMIC_CACHE");
            if (dynamicCacheSetting != null)
            {
                // 处理目标设置值
                Console.WriteLine($"WEBSITE_DYNAMIC_CACHE: {dynamicCacheSetting.Value}");
            }
        }
    }
}

方式二:直接单独获取应用设置(更高效)

如果只需要AppSettings,没必要加载整个WebApp资源,可以用GetWebAppSettingsAsync()方法直接获取,性能更优:

var credentials = new InteractiveBrowserCredential(new InteractiveBrowserCredentialOptions() { TenantId = tenantid });
ArmClient client = new ArmClient(credentials);
var groupid = ResourceGroupResource.CreateResourceIdentifier(mySubscriptionID, myResourceGroupID);
var group = client.GetResourceGroupResource(groupid);

foreach(var plan in group.GetAppServicePlans())
{
    foreach(var app in plan.GetWebApps())
    {
        // 直接获取应用设置
        var appSettingsResult = await app.GetWebAppSettingsAsync();
        var appSettings = appSettingsResult.Value.Properties;
        
        // 查询目标设置
        if (appSettings.TryGetValue("WEBSITE_DYNAMIC_CACHE", out var settingValue))
        {
            Console.WriteLine($"WEBSITE_DYNAMIC_CACHE: {settingValue}");
        }
    }
}

核心原因说明

Azure ARM SDK的列表类操作(如GetWebApps()、GetAppServicePlans())默认返回资源的精简元数据,只包含名称、ID、位置等基础属性,像SiteConfig、应用设置这类嵌套或非核心属性,需要显式调用获取方法才能加载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 19:30:05