1

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を再起動すると、コードは正常に機能しました。私はこの件に関してかなり困惑しています。誰かがこれについて良い説明を提供できますか??

4

1 に答える 1

0

UserPrincipal には、クロス ドメイン シナリオでの既知のバグがいくつかあります。再度発生した場合は、マシンからグループを解決できるかどうかを確認してください。グループ メンバーの SID を解決できない場合にも問題が発生しました。

于 2012-12-05T20:50:50.207 に答える