Windows ドメイン ユーザーが属するグループを照会するために、プログラムにこのコードを使用しています。
public void GetGroupNames(string userName, List<string> result)
{
using (PrincipalContext pc = new PrincipalContext(ContextType.Domain))
{
UserPrincipal uPrincipal = UserPrincipal.FindByIdentity(pc, userName);
if (uPrincipal != null)
{
PrincipalSearchResult<Principal> srcList = uPrincipal.GetGroups();
foreach (Principal item in srcList)
{
result.Add(item.ToString());
}
}
}
}
実装したばかりでデバッグしていたとき、
UserPrincipal uPrincipal = UserPrincipal.FindByIdentity(pc, userName);
常にnullになりました。その後、ビジュアルスタジオを閉じて別のことをしなければなりませんでした。私が戻ってきてビジュアルスタジオを開いたとき、このコードはうまくいきました。数日前、組織でネットワークの問題が発生しました。その間、私は自分の PC の電源を切りませんでした。ネットワークが正常に戻った後、インターネットに問題なく接続でき、デスクトップをサーバーなどにリモート接続できました。これは、Active Directory 認証が正常に行われたことを証明していますが、上記のコードは、指定された名前の UserPrinical を見つけることができませんでした。私の。次にPCを再起動すると、コードは正常に機能しました。私はこの件に関してかなり困惑しています。誰かがこれについて良い説明を提供できますか??