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

如何使用C#获取Azure中应用服务实例及资源组内应用服务的所有实例?

使用C#获取Azure App Service实例的方法及示例代码

前置准备

首先需要安装两个核心NuGet包:

  • Azure.ResourceManager.AppService:用于操作App Service资源的最新Azure管理SDK
  • Azure.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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 11:00:00