FindByIdentity
は、フォレストの検索には適していません。
私はこのような何か試してみました:
var d = new PrincipalContext(ContextType.Domain, "domain.com:3268", "DC=com");
var p = UserPrincipal.FindByIdentity(d, IdentityType.SamAccountName, username);
をしかし、私は紹介が返されたというエラーを取得しておきます。それはあなたのために異なるかもしれません。 "3268"ポートは、グローバルカタログ(フォレスト全体の検索)を使用するように指示します。ルート(私は "DC = com"として持っています)は、あなたのフォレスト内のすべてのドメインにわたって共通でなければなりません。したがって、すべてのドメインが "domain.com"のサブドメインである場合は、 "DC = domain、DC = com"と入力することができます。しかし、同じADフォレストの "domain.com"と "otherdomain.com"の部分があれば、それは動作しません。
FindByIdentity
もメールアドレスで検索することはできませんので、PrincipalSearcherを使用する方がよい場合があります。あなたは私が得た同じ紹介エラーが発生した場合
、あなたが紹介を追跡するためにそれを伝えることができます。
PrincipalSearcher srch = new PrincipalSearcher(User);
((DirectorySearcher) srch.GetUnderlyingSearcher()).ReferralChasing = ReferralChasingOption.All;
プリンシパルコンテキストオブジェクトの変形を渡してみてください。新しいPrincipalContext(ContextType.Domain、 "domain name here")。私はちょうど提案を試みていない。 – Hakunamatata
これはドメインを知っているときに機能します。ありがとう!私はまだ、SharePointのユーザーフィールドに似たオプションをユーザーに提供したいと考えていますが、これは一時的に行います。 – Dinerdo