以下は私のコードです:
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".
整理する方法があれば教えてください。
読んでくれてありがとう、そして親切にいくつかの提案をしてください。