1

SearchResultCollection の値を列挙しようとしています。

すべて正常にコンパイルされますが、次の行で 0x8000500c エラーが発生します。

foreach (PropertyValueCollection e in de.Properties.Values)
{
    sw.WriteLine(e.Value);
}

完全な方法は次のとおりです。

private static void GetValues()
{
    var directoryEntry = new DirectoryEntry("LDAP://8.8.8.8:8888", "foo", "bar",
                                                       AuthenticationTypes.None);
    var ds = new DirectorySearcher(directoryEntry);
    var final = ds.FindAll();

    var sw = new StreamWriter(@"C:\z\FooBar.txt");

    var titlesDone = false;

    foreach (var de in from SearchResult x in final select x.GetDirectoryEntry())
    {
        if (!titlesDone)
        {
            foreach (string d in de.Properties.PropertyNames)
            {
                sw.WriteLine(d);
                titlesDone = true;
            }
        }


        foreach (PropertyValueCollection e in de.Properties.Values)
        {
            //I get the error on the below line
            sw.WriteLine(e.Value);
        }
    }

    sw.Flush();
    sw.Close();
}

これが機能しない理由を理解するのを手伝ってもらえますか?

ありがとう

4

1 に答える 1

1

Active Directory エラー コードは、AdsErr.h SDK ヘッダー ファイルにリストされています。

//
// MessageId: E_ADS_CANT_CONVERT_DATATYPE
//
// MessageText:
//
//  The directory datatype cannot be converted to/from a native DS datatype
//
#define E_ADS_CANT_CONVERT_DATATYPE      _HRESULT_TYPEDEF_(0x8000500CL)

したがって、問題はワイヤの反対側にあります。ディレクトリ エントリに、一般的なデータ型に変換する方法がわからない、ある種の異常なカスタム プロパティがあります。サーバー管理者に相談してこれを解決するか、読み取る必要があるプロパティをより選択してください。

于 2012-05-20T12:56:57.093 に答える