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

如何使用C#以编程方式横向扩展Azure App Service Web应用

在.NET中实现Azure App Service自定义横向扩展

当然可以实现,如今官方已提供替代旧弃用包的现代SDK,无需依赖过时的Microsoft.Azure.Management.Websites。

推荐使用的SDK包

目前官方推荐使用Azure.ResourceManager.AppService NuGet包,它属于Azure新一代ARM管理SDK体系,支持.NET Core/.NET 5+等现代框架,完全替代了旧版的网站管理包。

核心实现步骤

  • 步骤1:安装NuGet包
    在项目中安装目标包,可使用以下命令:

    Install-Package Azure.ResourceManager.AppService
    

    或通过.NET CLI安装:

    dotnet add package Azure.ResourceManager.AppService
    
  • 步骤2:配置身份验证
    需要借助Azure服务主体(Service Principal)获取管理权限,提前准备好租户ID、客户端ID、客户端密钥,然后创建ARM客户端实例:

    var tenantId = "你的租户ID";
    var clientId = "你的客户端ID";
    var clientSecret = "你的客户端密钥";
    var credential = new ClientSecretCredential(tenantId, clientId, clientSecret);
    var armClient = new ArmClient(credential);
    
  • 步骤3:定位目标App Service资源
    通过订阅ID、资源组名称、应用名称定位到你的Web应用:

    var subscriptionId = "你的订阅ID";
    var resourceGroupName = "你的资源组名称";
    var appName = "你的App Service名称";
    
    var resourceIdentifier = WebSiteResource.CreateResourceIdentifier(subscriptionId, resourceGroupName, appName);
    var webSiteResource = armClient.GetWebSiteResource(resourceIdentifier);
    
  • 步骤4:执行横向扩展操作
    根据自定义条件调整实例数量。如果是直接修改Web应用的缩放配置:

    // 获取当前缩放设置
    var scaleSettings = await webSiteResource.GetWebSiteSiteSlotConfigResourceAsync();
    var currentScale = scaleSettings.Value.GetApplicationScaleSettings();
    
    // 自定义条件满足时调整实例数,示例设为3个
    if (你的特定条件判断逻辑)
    {
        var updateOptions = new ApplicationScaleSettingsUpdate()
        {
            Capacity = 3
        };
        await scaleSettings.Value.UpdateApplicationScaleSettingsAsync(updateOptions);
    }
    

    若基于App Service Plan进行横向扩展,需先定位到对应的计划资源再修改容量:

    // 获取App Service Plan资源
    var planIdentifier = AppServicePlanResource.CreateResourceIdentifier(subscriptionId, resourceGroupName, "你的App Service Plan名称");
    var appServicePlanResource = armClient.GetAppServicePlanResource(planIdentifier);
    
    // 修改实例数量
    var planUpdateOptions = new AppServicePlanPatch()
    {
        Capacity = 3
    };
    await appServicePlanResource.UpdateAsync(planUpdateOptions);
    

注意事项

  • 确保服务主体拥有Microsoft.Web/sites/write或Microsoft.Web/serverFarms/write权限,具体取决于你修改的是Web应用还是App Service Plan。
  • 自定义触发条件的逻辑需自行实现,比如基于CPU使用率、业务队列长度等指标。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 12:34:58