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

如何使用Azure.ResourceManager库在.NET中更新Azure应用网关?

Azure应用网关完整配置更新示例(Azure.ResourceManager库)

问题说明

ApplicationGatewayResource.UpdateAsync(new())仅支持标签更新,无法修改网关核心配置(如SSL证书、路由规则等)。要实现完整配置更新,可采用以下两种方式:

方式1:补丁更新(推荐)

通过构建ApplicationGatewayPatch对象,仅指定需要修改的属性,避免覆盖未变更的配置:

// 1. 获取目标应用网关资源
var appGatewayId = ResourceIdentifier.Parse(_configuration["Azure:ApplicationGatewayId"]);
ApplicationGatewayResource appGateway = await _armClient.GetApplicationGatewayResource(appGatewayId).GetAsync();

// 2. 构建补丁对象,复制原有SSL证书集合(防止丢失已有证书)
var patch = new ApplicationGatewayPatch(appGateway.Data.Location)
{
    SslCertificates = new List<ApplicationGatewaySslCertificate>(appGateway.Data.SslCertificates)
};

// 3. 添加新的SSL证书
patch.SslCertificates.Add(new ApplicationGatewaySslCertificate
{
    Name = name,
    Data = BinaryData.FromBytes(pfx), // 根据pfx字节数组调整,若为文件需先读取为字节
    Password = pfxPassword
});

// 4. 执行更新操作并等待完成
var updateOperation = await appGateway.UpdateAsync(WaitUntil.Completed, patch);
ApplicationGatewayResource updatedAppGateway = updateOperation.Value;

方式2:完整配置覆盖

若需要替换整个网关配置,可使用BeginCreateOrUpdateAsync方法,传入修改后的完整ApplicationGatewayData对象:

// 1. 获取目标应用网关资源
var appGatewayId = ResourceIdentifier.Parse(_configuration["Azure:ApplicationGatewayId"]);
ApplicationGatewayResource appGateway = await _armClient.GetApplicationGatewayResource(appGatewayId).GetAsync();

// 2. 修改现有配置数据
var updatedData = appGateway.Data;
updatedData.SslCertificates.Add(new ApplicationGatewaySslCertificate
{
    Name = name,
    Data = BinaryData.FromBytes(pfx),
    Password = pfxPassword
});

// 3. 执行创建/更新操作(网关存在则更新,不存在则创建)
var operation = await appGateway.BeginCreateOrUpdateAsync(WaitUntil.Completed, updatedData);
ApplicationGatewayResource updatedAppGateway = operation.Value;

关键指导

  • 集合属性处理:修改SslCertificates、RequestRoutingRules等集合类属性时,需复制原有集合再进行增删改,避免直接覆盖导致丢失原有配置。
  • 权限要求:确保执行操作的身份拥有Application Gateway Contributor或等效Azure权限。
  • 异步操作等待:使用WaitUntil.Completed确保更新操作完全完成后再处理结果,避免数据不一致。
  • 只读属性注意:appGateway.Data部分属性为只读,修改时需通过补丁对象或复制后修改完整数据对象实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 18:22:52