迁移至Azure.ResourceManager.Dns时Metadata设置问题求助
Azure.ResourceManager.Dns 中设置 Metadata 的解决方案
在新版 Azure.ResourceManager.Dns SDK 中,Metadata 不再通过旧版的 RecordSetParams 对象直接设置,而是需要通过对应记录类型的 Data 类(如 DnsARecordData)来配置,再通过创建/更新操作应用到资源。以下是具体实现方式:
1. 创建新记录集时设置 Metadata
构建 DnsARecordData 对象时,直接初始化或赋值 Metadata 字典,再调用 CreateOrUpdateAsync 完成创建:
using Azure.ResourceManager.Dns; using Azure.ResourceManager.Dns.Models; // 构建A记录数据,包含Metadata var aRecordData = new DnsARecordData { TtlInSeconds = 3600, // 直接设置Metadata字典 Metadata = new Dictionary<string, string> { { OUR_HOST_KEY, Environment.MachineName }, { "Requestor-IPaddress", requestSourceIP }, { "datetime", $"{DateTime.Now.ToShortDateString()}-{DateTime.Now.ToShortTimeString()}" } }, // 添加A记录条目 ARecords = { new DnsARecordInfo(address) } }; // 调用CreateOrUpdateAsync创建记录集(需提前获取DnsARecordCollection实例) var createOperation = await dnsARecordCollection.CreateOrUpdateAsync( WaitUntil.Completed, recordSetName, // 记录集名称 aRecordData); var createdRecordSet = createOperation.Value;
2. 更新现有记录集的 Metadata
若要修改已存在记录集的 Metadata,需先获取记录集的 Data 对象,修改后再执行更新操作:
// 获取目标记录集 var existingRecordSet = await dnsARecordCollection.GetAsync(recordSetName); if (existingRecordSet != null) { var updatedData = existingRecordSet.Value.Data; // 修改Metadata:添加新键值对或覆盖现有条目 updatedData.Metadata["Updated-Key"] = "Updated-Value"; // 也可以直接替换整个字典 // updatedData.Metadata = new Dictionary<string, string> { { "New-Key", "New-Value" } }; // 执行更新 var updateOperation = await dnsARecordCollection.CreateOrUpdateAsync( WaitUntil.Completed, recordSetName, updatedData); }
关键说明
新版 SDK 采用资源数据模型设计:
- 所有可配置属性(包括 Metadata)都封装在对应记录类型的
DnsRecordSetData派生类中(如DnsARecordData、DnsCnameRecordData) - 已获取的
DnsARecordResource实例的Metadata属性为只读,仅用于读取当前资源状态,修改需通过 Data 对象重新提交更新
内容的提问来源于stack exchange,提问作者BigTFromAZ
相关产品推荐
相关产品推荐

