如何使用C#在DNS中创建SRV记录

mca*_*s20 8 c# dns wmi srv

我正在使用WMI创建不同类型的DNS记录,但是SRV记录存在问题.每当我传递DomainName参数时,我都会收到"未找到"错误.域名对我来说很好看.

有没有人成功地做到了这一点?

这是我的代码:

internal static void CreateSrvRecordInDns(string Zone, string OwnerName, string DomainName, UInt16 Weight, UInt16 Priority, UInt16 Port)
    {
        DnsProvider dns = new DnsProvider();
        ManagementClass mClass = new ManagementClass(dns.Session, new ManagementPath("MicrosoftDNS_SrvType"), null);
        ManagementBaseObject inParams = mClass.GetMethodParameters("CreateInstanceFromPropertyData");
        inParams["DnsServerName"] = dns.Server;
        inParams["ContainerName"] = Zone;
        inParams["OwnerName"] = OwnerName;
        inParams["DomainName"] = DomainName; //Error occurs here
        inParams["Port"] = Port;
        inParams["Priority"] = Priority;
        inParams["Weight"] = Weight;
        mClass.InvokeMethod("CreateInstanceFromPropertyData", inParams, null);
        dns.Dispose(ref inParams);
        dns.Dispose(ref mClass);
    }
Run Code Online (Sandbox Code Playgroud)

rke*_*erm 4

只需将有问题的行替换为:

inParams["SRVDomainName"] = DomainName;
Run Code Online (Sandbox Code Playgroud)

我不知道原因,但是当通过以下方式获取属性列表时:

PropertyData[] pd = new PropertyData[inParams.Properties.Count];
inParams.Properties.CopyTo(pd,0);
Run Code Online (Sandbox Code Playgroud)

这是该字段的名称(微软的错误?)

HTH。

PS 为了查看每个字段的正确格式,请使用 wbemtest 工具(命令提示符下的 wbemtest),连接到 root\MicrosoftDNS 命名空间并运行以下查询:

Select * from MicrosoftDNS_SRVType
Run Code Online (Sandbox Code Playgroud)

您应该使用与答案中列出的实例相同的格式)。