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
相关产品推荐
相关产品推荐

