У меня есть веб-приложение .NET 3.5, которое использует классы System.DirectoryServices.AccountManagement. Когда я ищу некоторых пользователей, я получаю PrincipalOperationException: с сервера был возвращен реферал. Если бы я сделал это по-старому со своим собственным кодом LDAP, я мог бы включить преследование рефералов. Нужно ли мне переписывать код?
Мой код выглядит следующим образом:
using (var principalContext = new PrincipalContext(ContextType.Domain, null, adPath))
{
// Find the principal object for which you wish to enumerate group
// membership.
using (var userPrincipal = UserPrincipal.FindByIdentity(principalContext, identity))
{
if (userPrincipal != null)
{
Name = userPrincipal.DisplayName;
DistinguishedName = userPrincipal.DistinguishedName;
EmailAddress = userPrincipal.EmailAddress;
Sid = userPrincipal.Sid.Value;
}
}
}
My adPath может иметь одно из двух значений. Одно из значений - это недавно присоединенный домен, к которому можно получить доступ с помощью различных инструментов. Я считаю, что это проблема того, как эта библиотека .NET выполняет вызовы LDAP.