я получаю неустойчивое COM-исключение" , операционная ошибка произошла (0x80072020) " (показанный ниже), когда я пытаюсь запросить Active Directory с помощью метода GroupPrincipal. FindByIdentity
Здесь является моим кодом:
PrincipalContext ctx = new PrincipalContext(ContextType.Domain, Environment.UserDomainName);
GroupPrincipal groupPrincipal = GroupPrincipal.FindByIdentity(ctx, IdentityType.Name, "Group to find");
я получаю Исключение:
Inner Exception: System.Runtime.InteropServices.COMException (0x80072020): An operations error occurred.
at System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)
at System.DirectoryServices.DirectoryEntry.Bind()
at System.DirectoryServices.DirectoryEntry.get_AdsObject()
at System.DirectoryServices.PropertyValueCollection.PopulateList()
at System.DirectoryServices.PropertyValueCollection..ctor(DirectoryEntry entry, String propertyName)
at System.DirectoryServices.PropertyCollection.get_Item(String propertyName)
at System.DirectoryServices.AccountManagement.PrincipalContext.DoLDAPDirectoryInitNoContainer()
at System.DirectoryServices.AccountManagement.PrincipalContext.DoDomainInit()
at System.DirectoryServices.AccountManagement.PrincipalContext.Initialize()
at System.DirectoryServices.AccountManagement.PrincipalContext.get_QueryCtx()
at System.DirectoryServices.AccountManagement.Principal.FindByIdentityWithTypeHelper(PrincipalContext context, Type principalType, Nullable`1 identityType, String identityValue, DateTime refDate)
at System.DirectoryServices.AccountManagement.Principal.FindByIdentityWithType(PrincipalContext context, Type principalType, IdentityType identityType, String identityValue)
at System.DirectoryServices.AccountManagement.GroupPrincipal.FindByIdentity(PrincipalContext context, IdentityType identityType, String identityValue)
код работает от служба Windows на сервер Windows 2003 SP2 .
я нашел другой вопрос о Переполнении стека, Active Directory, перечислив группы пользователя, COM-исключение , предположив, что Kerberos включения как опция в конструкторе PrincipalContext решит эту проблему, но я получаю другой шестнадцатеричный код , чем в этом вопросе.
Мои вопросы :
Это случилось со мной в ASP.NET (Windows 2008 R2 / IIS7), где я возился с Web.config, и эта ошибка начинала появляться при каждом вызове FindByIdentity. Основной причиной было то, что пул приложений работал как DefaultAppPool, и он снова начал работать после того, как я изменил его на запуск в качестве сетевой службы. Я не совсем понимаю, почему это изменилось, но это произошло.
В моем случае пул веб-приложений работал как «DefaultAppPool», у которого не было достаточного доступа для подключения к Active Directory компании. Итак, я выдал себя за учетную запись, которая имеет доступ к AD в моем коде, и все работало нормально.
Для меня я столкнулся с той же проблемой при попытке войти на один из контроллеров домена, у меня есть 2 контроллера домена, один из которых работает, а другой не работает, я полагаю, что это как-то связано с профиль пользователя, все еще расследующий ...