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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 02:01:06