Ошибка с методом UserPrincipal.GetAuthorizationGroups ()

У меня возникла проблема с использованием метода GetAuthorizationGroups класса UserPrincipal в веб-приложении.

Используя следующий код, я получаю "При попытке получить группы авторизации произошла ошибка (5)"

PrincipalContext context = new PrincipalContext(ContextType.Domain, null, "DC=MyCompany,DC=COM", "username", "password");
UserPrincipal p = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, "joe.blogs");
var groups = p.GetAuthorizationGroups();

Я считаю, что этот код работает до определенной степени.

Когда я просматриваю объект контекста, я вижу, что сервер и имя пользователя / пароль были правильно разрешены в объектеКогда я просматриваю объект p, я вижу, что данные AD были заполнены, как номер телефона и т. Д.

Вот трассировка стека от ошибки.

[PrincipalOperationException: While trying to retrieve the authorization groups, an error (5) occurred.]
   System.DirectoryServices.AccountManagement.AuthZSet..ctor(Byte[] userSid, NetCred credentials, ContextOptions contextOptions, String flatUserAuthority, StoreCtx userStoreCtx, Object userCtxBase) +317279
   System.DirectoryServices.AccountManagement.ADStoreCtx.GetGroupsMemberOfAZ(Principal p) +441
   System.DirectoryServices.AccountManagement.UserPrincipal.GetAuthorizationGroupsHelper() +78
   System.DirectoryServices.AccountManagement.UserPrincipal.GetAuthorizationGroups() +11

Удаление имени пользователя и пароля из конструктора PrincipalContext и изменение пула приложений (в iis7) для запуска под тем же пользователем ([email protected]) - работает следующий код.

PrincipalContext context = new PrincipalContext(ContextType.Domain, null, "DC=MyCompany,DC=COM");
UserPrincipal p = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, "joe.blogs");
var groups = p.GetAuthorizationGroups();

Мне нужно, чтобы код в первом примере работал - я не хочу запускать пул приложений от имени пользователя домена, чтобы этот код работал.

Ответы на вопрос(3)

Ваш ответ на вопрос