Pregunta

Estoy usando WMI para crear diferentes tipos de registros DNS, pero estoy teniendo un problema con los registros SRV. Sigo recibiendo un error de "no encontrado" cuando paso el parámetro de Dominio. El nombre de dominio se ve bien a mí.

cualquier

¿Ha hecho alguna vez con éxito este?

Aquí está mi código:

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);
    }
¿Fue útil?

Solución

Simplemente reemplace la línea problemática con:

inParams["SRVDomainName"] = DomainName;

No sé la razón, pero cuando tiene la lista de propiedades por:

PropertyData[] pd = new PropertyData[inParams.Properties.Count];
inParams.Properties.CopyTo(pd,0);

Este es el nombre de este campo (error de Microsoft?)

HTH.

P.S. Con el fin de ver el formato adecuado para cada campo, utilice la herramienta wbemtest (wbemtest del símbolo del sistema), conectarse a raíz \ MicrosoftDNS espacio de nombres y ejecute la consulta siguiente:

Select * from MicrosoftDNS_SRVType

Se debe utilizar el mismo formato que los casos enumerados en la respuesta).

Otros consejos

Me gustaría añadir un poco de detalle para los que todavía no son capaces de conseguirlo ...

Si su Nombre de dominio google.com y si el Registro es: _finger._tcp.google.com apuntando hacia host de destino : hello.google.com a continuación las variables y sus valores serán como en:

    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;

I han probado en mediante la creación de una aplicación de ejemplo y la creación de la zona google.com y el establecimiento de un registro SRV y sus valores como se ha mencionado arriba. Espero que ayude a las personas a quienes otras respuestas que pueden sonar poco menos explicativo.

El registro SRV correcta sería _finger._tcp.example.com.

No sé WMI, pero el sistema puede ser que sea necesario crear el nodo "vacío no terminal" para _tcp.example.com primero.

Editar

Creo que veo el problema ahora - su OwnerName debe ser el que contiene _finger._tcp.example.com. La DomainName se supone que contiene el target del registro SRV.

http://msdn.microsoft .com / es-es / library / ms682736% 28v% = VS.85 29.aspx

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top