我正在使用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);
}
答案 0 :(得分:4)
只需用以下内容替换有问题的行:
inParams["SRVDomainName"] = DomainName;
我不知道原因,但是当得到属性列表时:
PropertyData[] pd = new PropertyData[inParams.Properties.Count];
inParams.Properties.CopyTo(pd,0);
这是该字段的名称(微软的错误?)
HTH。
P.S。要查看每个字段的正确格式,请使用wbemtest工具(来自命令提示符的wbemtest),连接到root \ MicrosoftDNS命名空间并运行以下查询:
Select * from MicrosoftDNS_SRVType
您应该使用与答案中列出的实例相同的格式。
答案 1 :(得分:2)
我想在这里为那些仍然无法获得它的人添加一些细节......
如果您的域名是 google.com ,并且记录是: _finger._tcp.google.com 指向目标主机: hello.google.com ,然后变量及其值将如下所示:
inParams["DnsServerName"] = dns.Server;
inParams["ContainerName"] = Zone; //google.com
inParams["OwnerName"] = OwnerName; //_finger._tcp.google.com
// Can't set domain name like this, leave this field
//inParams["DomainName"] = DomainName; //_tcp.google.com
//Set Target SRV Host here which is providing the service,,,
inParams["SRVDomainName"] = DomainName; //target Host : hello.google.com
inParams["Port"] = Port;
inParams["Priority"] = Priority;
inParams["Weight"] = Weight;
我已经通过创建示例应用程序并创建了区域google.com并设置了SRV记录及其值来进行测试。我希望对其他回复可能听起来不太明白的人有所帮助。
答案 2 :(得分:0)
正确的SRV记录为_finger._tcp.example.com
。
我不知道WMI,但系统可能要求您先为_tcp.example.com
创建“空的非终端”节点。
修改强>
我相信我现在看到了问题 - 您的 OwnerName
字段应该是包含_finger._tcp.example.com
的字段。 DomainName
字段应包含SRV
记录的目标。
http://msdn.microsoft.com/en-us/library/ms682736%28v=VS.85%29.aspx