如何使用C#获取Azure中应用服务实例及资源组内应用服务的所有实例?
使用C#获取Azure App Service实例的方法及示例代码
前置准备
首先需要安装两个核心NuGet包:
Azure.ResourceManager.AppService:用于操作App Service资源的最新Azure管理SDKAzure.Identity:用于Azure服务的身份认证(支持本地开发、托管身份等多种场景)
可以通过NuGet包管理器或命令行安装:
Install-Package Azure.ResourceManager.AppService Install-Package Azure.Identity
示例1:获取指定资源组内的所有App Service及其实例
以下代码会先定位到目标资源组,枚举其中所有App Service,再逐一获取每个App Service的运行实例信息:
using Azure.Identity; using Azure.ResourceManager; using Azure.ResourceManager.AppService; var subscriptionId = "你的订阅ID"; var resourceGroupName = "目标资源组名称"; // 使用DefaultAzureCredential完成认证,本地开发会自动读取Azure CLI/VS的登录信息 var armClient = new ArmClient(new DefaultAzureCredential()); // 获取目标订阅资源 var subscription = armClient.GetSubscriptionResource(new Azure.Core.ResourceIdentifier($"/subscriptions/{subscriptionId}")); // 获取目标资源组 var resourceGroup = await subscription.GetResourceGroupAsync(resourceGroupName); // 枚举资源组内所有App Service(WebSite资源) await foreach (var webSite in resourceGroup.GetWebSitesAsync()) { Console.WriteLine($"App Service名称: {webSite.Data.Name}"); Console.WriteLine("--- 实例信息 ---"); // 获取当前App Service的所有运行实例 await foreach (var instance in webSite.GetWebSiteInstanceIdentifiersAsync()) { var instanceResource = await webSite.GetWebSiteInstanceAsync(instance.Name); Console.WriteLine($"实例ID: {instanceResource.Data.Name}"); Console.WriteLine($"状态: {instanceResource.Data.State}"); Console.WriteLine($"区域: {instanceResource.Data.Location}"); Console.WriteLine("---------------"); } }
示例2:获取当前订阅下所有App Service及其实例
如果需要遍历当前订阅内所有资源组的App Service,可使用以下代码:
using Azure.Identity; using Azure.ResourceManager; using Azure.ResourceManager.AppService; var subscriptionId = "你的订阅ID"; var armClient = new ArmClient(new DefaultAzureCredential()); var subscription = armClient.GetSubscriptionResource(new Azure.Core.ResourceIdentifier($"/subscriptions/{subscriptionId}")); // 枚举订阅内所有资源组 await foreach (var resourceGroup in subscription.GetResourceGroupsAsync()) { Console.WriteLine($"资源组: {resourceGroup.Data.Name}"); // 枚举当前资源组内的App Service await foreach (var webSite in resourceGroup.GetWebSitesAsync()) { Console.WriteLine($" App Service: {webSite.Data.Name}"); // 获取实例信息 await foreach (var instance in webSite.GetWebSiteInstanceIdentifiersAsync()) { var instanceResource = await webSite.GetWebSiteInstanceAsync(instance.Name); Console.WriteLine($" 实例: {instanceResource.Data.Name} | 状态: {instanceResource.Data.State}"); } } }
关键说明
- 权限要求:执行代码的身份(本地登录账户、托管身份等)需要拥有目标订阅/资源组的
App Service Reader或Contributor权限,否则会触发权限不足错误。 - 认证方式:
DefaultAzureCredential会自动适配不同环境的认证逻辑,本地开发优先使用Azure CLI、Visual Studio或Azure PowerShell的登录信息;部署到Azure后可直接使用托管身份。 - 扩展查询:如果需要获取实例的CPU、内存等运行指标,可结合Azure Monitor SDK进一步调用相关接口。
内容的提问来源于stack exchange,提问作者Traci
相关产品推荐
相关产品推荐

