0

私はLinqToLdapを使用しており、LinqToLdap が提供する例を使用して、AD からすべてのユーザーを見つけようとしました。しかし、成功しませんでした。最初に、AD により適合するようにモデルを変更しようとしました

[DirectorySchema("DC=corp,DC=intern", ObjectClass = "User")]
public class User : DirectoryObjectBase{
    [DistinguishedName]
    public string DistinguishedName { get; set; }

    [DirectoryAttribute("cn", ReadOnly = true)]
    public string CommonName { get; set; }

    [DirectoryAttribute]
    public string Title { get; set; }

    [DirectoryAttribute(StoreGenerated = true)]
    public Guid ObjectGuid { get; set; }

    [DirectoryAttribute(StoreGenerated = true)]
    public SecurityIdentifier ObjectSid { get; set; }

    [DirectoryAttribute("memberOf", ReadOnly = true)]
    public Collection<string> GroupMemberships { get; set; }
}

そしてクエリ

public class LinqToLdapProvider{
    private LdapConfiguration _cfg;
    public LinqToLdapProvider(string domain){
        _cfg = new LdapConfiguration();
        _cfg.ConfigurePooledFactory(domain)
                .MinPoolSizeIs(1)
                .MaxPoolSizeIs(50)
                .AuthenticateAs(new NetworkCredential("MyDomain.Username","MySecretPAssword"));
    }
    public void Query(){
        using (var context = new DirectoryContext(_cfg)) {
            context.Log = Console.Out;
            var user = context.Query<User>(); // I expected this to return all users
        }
    }
}

しかし、その結果、すべてのサーバーとその他のものを含む非常に巨大なリストを取得しました...ドキュメント内で詳細情報を見つけようとし、ユーザー クラス ビットの DirectorySchema 属性を変更しようとしましたが、うまくいきませんでした。

これは、ユーザーが緑色のストロークを持つユーザーである場所を照会しようとしたパスです。

ここに画像の説明を入力

4

1 に答える 1

1

マッピングをより具体的にする必要があります。名前付けコンテキストをユーザー OU に変更するか、ObjectClass="User" ObjectCategory="Person" をスキーマ マッピングに追加します。詳細については、これを参照してください。

于 2014-03-28T20:57:05.490 に答える