使用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
相关产品推荐
相关产品推荐

