1

我正在尝试使用以下方法从 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();

而且我不断收到“服务器无法运行”错误。

我终于明白了我的问题,但我不知道如何解决它。

问题是,两台 ADAM 服务器位于防火墙和 NLB 后面,它们都以 adam.company.local 的名称和该名称的 nslookup 回复,回复的 100.10.130.1

我什至可以 ping 100.10.130.1 和名称 adam.company.local 所以问题不在于网络,但它是!

使用 WireShark,我发现服务器有时会返回他自己的名字,而我的调用开始尝试调用该名字。当然,防火墙会阻止它们并发生异常。

为了确认这一点,我在 hosts 文件中创建了 2 行,将两个服务器名称都设置为 100.10.130.1 并且问题消失了,我可以轻松检索所有组。

这是为什么?为什么断开连接会更改为我无法访问的机器?

最后一个问题是如何防止它,因为在发布机器上我无法在主机文件上创建这些行?

4

0 回答 0