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 中托管应用程序后,Principal Context 对象返回 null。我使用了表单身份验证而不是 Windows 身份验证,因为我需要自定义登录页面。

此行抛出错误:

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

其中Constants.DomainName=“我的域名”。

请让我知道是否有任何方法可以解决它。

感谢阅读并提出一些建议。

4

0 回答 0