8

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);
    }
4

3 に答える 3

4

問題のある行を次のように置き換えるだけです。

inParams["SRVDomainName"] = DomainName;

理由はわかりませんが、次の方法でプロパティリストを取得したとき:

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

これはこのフィールドの名前でした(Microsoftのバグ?)

HTH。

PS各フィールドの正しい形式を確認するには、wbemtestツール(コマンドプロンプトからwbemtest)を使用し、root \ MicrosoftDNS名前空間に接続して、次のクエリを実行します。

Select * from MicrosoftDNS_SRVType

回答にリストされているインスタンスと同じ形式を使用する必要があります)。

于 2010-10-05T14:10:13.073 に答える
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レコードとその値を設定してテストしました。他の返信が少し説明が少ないように聞こえるかもしれない人たちに役立つことを願っています。

于 2011-05-06T07:43:24.050 に答える
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

于 2010-09-23T07:12:07.990 に答える