2

ユーザーがメンバーであるすべてのグループをチェックするコードがいくつかあります。これActive Directoryは、開発環境ではローカルで正常に機能しますが、テスト システムにリリースすると機能しません。

IIS同僚の同僚は、アプリケーション プールが実行されているアカウントがポーリングできない可能性があると示唆していますActive Directory。これは当てはまりますか?グループが返されない原因は何ですか?

コードをローカルで実行すると、リストを取得できますが、Test は空に戻ります。エラーはまったくスローされません。

マルチドメインネットワークがあるため、「LIVE」を「TEST」に変更したサンプルコードですが、どちらも機能しません。

UserPrincipal user = UserPrincipal.Current;
if (user != null)
{
    PrincipalContext principalContext = new PrincipalContext(ContextType.Domain, "TEST");
    List<Principal> groupResults = user.GetGroups(principalContext).ToList();
}
4

3 に答える 3

1

ASP.NET の場合、これは機能するはずです。

    public static List<string> GetGroups(string userName)
    {
        RoleProvider roleProvider = new WindowsTokenRoleProvider();
        return roleProvider.GetRolesForUser(userName).ToList();
    }

超シンプル

于 2013-08-21T14:02:55.030 に答える
1

100% 確信があるわけではありませんが、コードよりもずっと簡単だと思います。

UserPrincipal user = UserPrincipal.Current;

if (user != null)
{
    List<Principal> groupResults = user.GetGroups().ToList();
}
于 2013-08-21T14:08:30.790 に答える