No se puede obtener datos de LDAP utilizando System.DirectoryServices.AccountManagement en la aplicación alojada en IIS.
Estoy utilizando el paquete System.DirectoryServices.AccountManagement para obtener los datos de usuarios de LDAP y funciona bien en mi máquina local, pero en el servidor, da un error que dice:
Se produjo un error de operaciones.
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.PrincipalSearcher.SetDefaultPageSizeForContext ()
at System.DirectoryServices.AccountManagement.PrincipalSearcher..ctor (Principal queryFilter)
La versión de .NET Core es 3.1, la versión de System.DirectoryServices.AccountManagement es 6.0 y la aplicación está alojada en IIS en una VM (versión de IIS 8.0). El código que estoy usando es el siguiente:
List<applicationuser> users = new List<applicationuser>();
using(var ctx = new PrincipalContext(ContextType.Domain, "mydomain")) {
var userPrinciple = new UserPrincipal(ctx);
using(var search = new PrincipalSearcher(userPrinciple)) {
var results = search.FindAll().OrderBy(u => u.DisplayName);
foreach(UserPrincipal domainUser in results) {
var adUser = new ApplicationUser {
Email = domainUser.EmailAddress,
FirstName = domainUser.Name,
PhoneNumber = domainUser.VoiceTelephoneNumber,
UserName = domainUser.UserPrincipalName,
EmployeeId = domainUser.EmployeeId
};
if (!String.IsNullOrWhiteSpace(adUser.Email)) {
users.Add(adUser);
}
}
}
}
Hasta ahora, he intentado cambiar la identidad del grupo de aplicación a Network Service, pero no funcionó.
davy.ai
El mensaje de error indica que hay un problema con la vinculación de entrada del directorio en el servidor. Esto puede ser causado por una variedad de factores como la conectividad de red, problemas de autenticación o permisos.
Aquí hay algunos pasos de solución de problemas que puedes intentar:
También puedes intentar ejecutar el código con permisos elevados o como administrador para asegurarte de que no haya problemas de permisos.
Si los pasos anteriores no resuelven el problema, puedes intentar habilitar el registro de LDAP en el servidor para obtener más información sobre el error.
En general, es importante asegurarse de que el entorno del servidor esté configurado correctamente y de que las dependencias necesarias estén instaladas y configuradas para que la aplicación funcione correctamente.