0

以下は私のコードです:

public List<ActiveDirectory> GetActiveDirectoryUsers(string user = "")
        {
            PrincipalContext ctx = new PrincipalContext(ContextType.Domain, Constants.DomainName);

            if (user == "User")
            {
                adUsers = GetSpecificGroupUsers(ctx, Constants.UserGroup);
            }
            else
            {
                adUsers = GetSpecificGroupUsers(ctx, Constants.AdminGroup);
                adUsers = GetSpecificGroupUsers(ctx, Constants.UserGroup);
            }

            ctx.Dispose();       
            return adUsers;
        }

        public List<ActiveDirectory> GetSpecificGroupUsers(PrincipalContext ctx,string groupName)
        {
            GroupPrincipal grp = GroupPrincipal.FindByIdentity(ctx, IdentityType.SamAccountName, groupName);

            if (grp != null)
            {
                foreach (Principal p in grp.GetMembers(false))
                {
                    if (p.DisplayName != null)
                    {
                        adUsers.Add(new ActiveDirectory()
                         {
                             UserName = p.DisplayName,
                             DisplayName = p.SamAccountName
                        });

                    }
                }

                grp.Dispose();

            }

            return adUsers;
        }

上記のコードは、Visual Studio エディター (開発環境) で機能します。しかし、IIS でアプリケーションをホストした後、プリンシパル コンテキスト オブジェクトは null を返します。カスタムログインページが必要なため、Windows認証ではなくフォーム認証を使用しました。

この行はエラーをスローしています:

PrincipalContext ctx = new PrincipalContext(ContextType.Domain, Constants.DomainName);

Where Constants.DomainName= "My_Domain_Name".

整理する方法があれば教えてください。

読んでくれてありがとう、そして親切にいくつかの提案をしてください。

4

0 に答える 0