그물 전체를 검색했지만 허용되는 원인 또는 해결 방법을 찾지 못했습니다.GroupPrincipal.GetMembers (true) - 지정된 디렉토리 서비스 속성 또는 값이 존재하지 않습니다.
내 목표는 그룹 및 그 하위 그룹의 구성원을 얻는 콘솔 응용 프로그램을 만드는 것입니다. 나는 DirectoryServices를 사용하여 그렇게 할 수있다. 그러나 나는 새로운 코드 관리를 사용하여 코드를 크게 복잡하게 만들지 않으려합니다. 내 코드 (마스크 일부 이름/경로)
PrincipalContext insPrincipalContext =
new PrincipalContext(ContextType.Domain,
"my.grp.net",
"DC=my,DC=grp,DC=net",
"domain\\username", "Password"
);
ArrayList users = new ArrayList();
GroupPrincipal oGroupPrincipal =
GroupPrincipal.FindByIdentity(insPrincipalContext,IdentityType.SamAccountName, "My group name");
PrincipalSearchResult<Principal> usrs = oGroupPrincipal.GetMembers(true);
foreach (UserPrincipal p in usrs)
{
if (p != null)
users.Add(p.SamAccountName);
}
이 코드는 몇 천 사용자를 검색 한 후 아래와 같은 오류가 발생합니다 아래로입니다. 디버그 모드에서 F5 키를 눌러 계속하면 동일한 예외를 다시 throw하기 전에 수천 명의 사용자가 반환됩니다.
System.DirectoryServices.AccountManagement.PrincipalOperationException was unhandled Message=The specified directory service attribute or value does not exist.
Source=System.DirectoryServices.AccountManagement ErrorCode=-2147016694 StackTrace:
at System.DirectoryServices.AccountManagement.ADStoreCtx.LoadDirectoryEntryAttributes(DirectoryEntry de)
at System.DirectoryServices.AccountManagement.ADDNLinkedAttrSet.MoveNextMemberEnum()
at System.DirectoryServices.AccountManagement.ADDNLinkedAttrSet.MoveNext()
at System.DirectoryServices.AccountManagement.FindResultEnumerator`1.MoveNext()
at System.DirectoryServices.AccountManagement.FindResultEnumerator`1.System.Collections.IEnumerator.MoveNext()
at ManagedActiveDirectoryTrial.Program.Main(String[] args) in C:\Khalid Naseem\Trial\ManagedActiveDirectoryTrial\ManagedActiveDirectoryTrial\Program.cs:line 77
at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart() InnerException: System.Runtime.InteropServices.COMException
Message=The specified directory service attribute or value does not exist.
Source=System.DirectoryServices
ErrorCode=-2147016694
StackTrace:
at System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)
at System.DirectoryServices.DirectoryEntry.Bind()
at System.DirectoryServices.DirectoryEntry.RefreshCache()
at System.DirectoryServices.AccountManagement.ADStoreCtx.LoadDirectoryEntryAttributes(DirectoryEntry de)
이 예외가 발생하는 사용자와 특성을 결정할 수 없어이 예외는별로 도움이되지 않습니다.
DirectoryServices API를 사용하여 동일한 그룹 및 하위 그룹의 사용자를 검색 할 수 있지만 피해야 할 코드와 회귀 코드가 많습니다.
이 문제에 대한 해결 방법을 높이 평가할 것입니다.
감사합니다 - 칼리드
안녕하세요, 문제 해결 방법을 찾으셨습니까? 나는 같은 문제를 겪고있다. – Shrike