Frage

ich WMI bin mit verschiedenen Arten von DNS-Einträgen zu erstellen, sondern ein Problem mit SRV-Datensätze habe. Ich erhalte einen „Not found“ Fehler, wenn ich den Domain Parameter übergeben. Der Domain-Name sieht gut aus für mich.

Hat jemand schon einmal erfolgreich das getan?

Hier ist mein Code:

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);
    }
War es hilfreich?

Lösung

Ersetzen Sie einfach die problematische Zeile mit:

inParams["SRVDomainName"] = DomainName;

Ich weiß nicht den Grund, aber wenn bekommt die Eigenschaften nach:

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

Dies war der Name dieses Feldes (Microsoft Bug?)

HTH.

P. S. Um das richtige Format für jedes Feld, um zu sehen, verwenden Sie wbemtest Werkzeug (wbemtest von Eingabeaufforderung), eine Verbindung zum root \ MicrosoftDNS Namespace und die folgenden Abfrage:

Select * from MicrosoftDNS_SRVType

Sie sollten das gleiche Format verwenden, wie die Instanzen in der Antwort aufgeführt).

Andere Tipps

Ich möchte ein bisschen Detail für diejenigen hier hinzufügen, die noch nicht in der Lage sind, es zu bekommen ...

Wenn Ihr Domain-Name ist google.com und wenn der Datensatz ist: _finger._tcp.google.com zeigt auf Ziel-Host : hello.google.com , dann werden die Variablen und ihre Werte werden als unter:

    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;

Ich habe getestet in durch eine Beispielanwendung zu schaffen und die Schaffung von Zone google.com und Einstellen eines SRV-Eintrag und seine Werte wie erwähnt auf. Ich hoffe, dass es die hilft, die andere Antworten klingen mögen es etwas weniger erklärend.

Der richtige SRV-Eintrag _finger._tcp.example.com sein würde.

Ich weiß nicht, WMI, aber das System kann die Sie auffordert, die „leere Nicht-Terminal“ Knoten für _tcp.example.com zuerst zu erstellen.

Bearbeiten

Ich glaube, ich das Problem sehe jetzt - OwnerName die ein _finger._tcp.example.com enthalten sein sollte. Die DomainName Feld soll die Ziel des SRV Datensatz enthalten.

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top