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

Azure.ResourceManager.Dns创建A记录遇阻,请求官方补充示例

从Microsoft.Azure.Management.Dns迁移到Azure.ResourceManager.Dns:创建/更新A记录的解决方案

新版Azure.ResourceManager.Dns采用资源中心式设计,不再通过直接修改RecordSet对象的方式操作DNS记录,而是通过构造记录数据类(如DnsARecordData)来完成创建或更新操作。以下是你旧代码的等价迁移实现:

核心代码示例

1. 创建新A记录(或无则创建)

// 前提:已通过Azure SDK认证并获取到目标DnsZoneResource实例(dnsZone)
string recordSetName = "your-record-name";
IPAddress targetIp = IPAddress.Parse("192.168.1.1");

// 构造A记录配置数据
var aRecordData = new DnsARecordData
{
    Ttl = 3600, // 生存时间,单位秒
    ARecords = { new DnsARecordInfo(targetIp) }
};

// 执行创建/更新操作,IfNoneMatch: "*"对应ETagMode.IfNoneMatch
await dnsZone.GetDnsARecords().CreateOrUpdateAsync(
    WaitUntil.Completed,
    recordSetName,
    aRecordData,
    new DnsARecordCreateOrUpdateOptions { ETagMode = ETagMode.IfNoneMatch });

2. 更新现有A记录(添加新IP)

// 获取目标A记录集合
var aRecordsCollection = dnsZone.GetDnsARecords();
// 获取现有记录
var existingRecord = await aRecordsCollection.GetAsync(recordSetName);

if (existingRecord.HasValue)
{
    // 复制现有记录数据并添加新IP
    var updatedData = existingRecord.Value.Data;
    updatedData.ARecords.Add(new DnsARecordInfo(targetIp));

    // 执行更新操作
    await existingRecord.Value.UpdateAsync(WaitUntil.Completed, updatedData);
}

关键说明

  • DnsARecordData是新版SDK中用于定义A记录内容的核心类,可直接实例化并修改属性,并非只读/内部类
  • 不同类型的DNS记录对应不同的数据类,比如CNAME记录对应DnsCnameRecordData,操作逻辑一致
  • 旧代码中的ifNoneMatch: "*"在新版中通过DnsARecordCreateOrUpdateOptions的ETagMode参数实现

文档建议

当前官方文档对DNS记录的具体操作示例覆盖不足,你可以在Azure SDK for .NET的DNS仓库提交需求,请求补充A、CNAME等常见记录类型的创建/更新示例,帮助后续开发者完成迁移。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 20:05:39