次を使用して、ADAM サーバーからユーザーのグループを取得しようとしています。
PrincipalContext yourDomain = new PrincipalContext(ContextType.ApplicationDirectory,
principalContextName,
principalContextContainer,
ContextOptions.ServerBind | ContextOptions.SimpleBind,
principalContextUserName,
principalContextPassword);
UserPrincipal user = UserPrincipal.FindByIdentity(yourDomain,
IdentityType.UserPrincipalName,
userName);
PrincipalSearchResult<Principal> groups = user.GetAuthorizationGroups();
そして、「サーバーが動作していません」というエラーが発生し続けます。
私はついに自分の問題を理解しましたが、それを修正する方法がわかりません。
問題は、2 つの ADAM サーバーがファイアウォールと NLB の背後にあり、どちらも adam.company.local という名前で応答し、その名前の nslookup で 100.10.130.1 を応答するということです。
100.10.130.1 と adam.company.local という名前に ping を実行することもできるので、問題はネットワークではありませんが、問題はあります。
WireShark を使用すると、ある時点でサーバーが自分の名前を返し、私の呼び出しがその名前を呼び出そうとすることがわかりました。もちろん、ファイアウォールはそれらをブロックし、例外が発生します。
これを確認するために、ホスト ファイルに 2 つの行を作成し、両方のサーバー名を 100.10.130.1 にすると、問題はなくなり、すべてのグループを簡単に取得できました。
何故ですか?de connection が、到達できないマシンに変更されるのはなぜですか?
最後の質問は、パブリケーション マシンではホスト ファイルにこれらの行を作成できないため、どうすればそれを防ぐことができるかということです。