C#/.NET如何使用新版ARM SDK在Azure DNS区域创建TXT记录?
在Azure DNS区域中编程创建TXT记录(新版
Azure.ResourceManager.Dns包实现) 问题背景
我需要以编程方式在Azure DNS区域中创建TXT DNS记录。原本使用已被微软标记为弃用的Azure.Management.Dns包时,可通过以下代码实现:
using Azure.Identity; using Azure.Management.Dns; var dnsClient = new DnsManagementClient(new DefaultAzureCredential()){SubscriptionId="mySubscriptionId"}; ... await dnsClient.RecordSets.CreateOrUpdateAsync(resourceGroupName, zoneName, recordSetName, RecordType.TXT, recordSet);
微软推荐使用Azure.ResourceManager.Dns包替代,但官方文档及示例仍在使用弃用包,且新版ARM模型文档未说明如何创建TXT记录、无相关示例。
编辑:最初误以为ARM包处于测试版,实际并非如此。
解决方案
1. 安装依赖NuGet包
确保已安装以下两个包:
Install-Package Azure.ResourceManager.Dns Install-Package Azure.Identity
2. 完整实现代码
using Azure.Identity; using Azure.ResourceManager.Dns; using Azure.ResourceManager.Dns.Models; using System.Threading.Tasks; class DnsTxtRecordCreator { static async Task Main(string[] args) { // 替换为你的实际参数 string subscriptionId = "你的订阅ID"; string resourceGroupName = "你的资源组名称"; string zoneName = "你的DNS区域名称(如example.com)"; string recordSetName = "TXT记录集名称(如@或自定义前缀)"; string txtContent = "你的TXT记录内容"; int ttl = 3600; // 记录生存时间,单位秒 // 初始化DNS管理客户端 var dnsClient = new DnsManagementClient(new DefaultAzureCredential()) { SubscriptionId = subscriptionId }; // 获取目标DNS区域资源 DnsZoneResource targetZone = await dnsClient.Zones.GetAsync(resourceGroupName, zoneName); // 构建TXT记录集配置 TxtRecordData txtRecordConfig = new TxtRecordData() { TtlInSeconds = ttl, TxtRecords = { new TxtRecordInfo() { Value = { txtContent } } } }; // 创建或更新TXT记录集 var createOperation = await targetZone.GetDnsTxtRecordSets().CreateOrUpdateAsync( WaitUntil.Completed, recordSetName, txtRecordConfig); DnsTxtRecordSetResource createdRecord = createOperation.Value; System.Console.WriteLine($"TXT记录集 {createdRecord.Data.Name} 已成功创建"); } }
核心说明
- 新版SDK通过
DnsZoneResource的GetDnsTxtRecordSets()方法,直接获取TXT记录集的操作入口 TxtRecordData用于定义记录的TTL和内容,TxtRecordInfo.Value是字符串集合,支持添加多条TXT记录值- 使用
WaitUntil.Completed确保操作完成后再获取结果,避免异步操作未完成导致的异常
内容的提问来源于stack exchange,提问作者Aileron79
相关产品推荐
相关产品推荐

