6

System.DirectoryServices.AccountManagementクラスを使用する.NET3.5Webアプリケーションがあります。一部のユーザーを検索すると、PrincipalOperationExceptionが発生します。サーバーから参照が返されました。私が自分のLDAPコードを使ってこれを昔ながらの方法で行った場合、紹介の追跡を有効にすることができます。コードを書き直す必要がありますか?

私のコードは次のようになります:

   using (var principalContext = new PrincipalContext(ContextType.Domain, null, adPath))
    {

        // Find the principal object for which you wish to enumerate group
        // membership.
        using (var userPrincipal = UserPrincipal.FindByIdentity(principalContext, identity))
        {
            if (userPrincipal != null)
            {
                Name = userPrincipal.DisplayName;
                DistinguishedName = userPrincipal.DistinguishedName;
                EmailAddress = userPrincipal.EmailAddress;
                Sid = userPrincipal.Sid.Value;
            }
        }
    }

私のadPathは2つの値のいずれかになります。値の1つは、最近参加したドメインであり、さまざまなツールを使用してアクセスできます。これは、この.NETライブラリがLDAP呼び出しを行う方法の問題だと思います。

4

2 に答える 2

1

コメントするには長すぎるため、これは部分的な回答です。

この Microsoft documentationによると、ご存知のように、紹介はクライアントが追跡できるヒントです。しかし、RODC に関しては、「たとえば、LDAP アプリケーションの場合、クライアントと RODC の間の LDAP 接続でチェイス リフェラルが有効になっている場合、アプリケーションは、クライアントが RODC からリフェラルを受信したことを決して認識しません。クライアントは紹介で指定された書き込み可能なドメイン コントローラーに自動的にリダイレクトされます。 ".

そこで、Microsoft サイトの接続で LDAP 追跡を有効にする方法を調べたところ、 ADSI の使用を意味するこれが見つかりました。私はその答えに非常に興味があります。

次のようにグローバル カタログにクエリを実行しますか。

/* Retreiving a principal context
 */
PrincipalContext domainContext = new PrincipalContext(ContextType.Domain, "YourGCServer:3268", "dc=dom,dc=fr", "User", "Password");

フォレスト ドメインのすべてのデータが含まれているはずです。お役に立てば幸いです。

于 2011-04-07T05:46:41.997 に答える
0

次の形式のコードを試しましたか (ドメインを 2 番目の引数として入力):

var principalContext = new PrincipalContext(ContextType.Domain, "office.local", "OU=Users, DC=office, DC=local" ))

adPathまた、が最も具体的なものから最も具体的でないものまでであることを確認してください。

于 2012-09-13T04:31:19.380 に答える