es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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ó.

Tags:  , , ,

Answer

  1. Avatar for 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:

    1. Verificar la conectividad de red – asegúrate de que el servidor pueda conectarse al servidor LDAP a través de la red.
    2. Verificar las credenciales – asegúrate de que la cuenta utilizada para conectarse al servidor LDAP tenga los permisos necesarios para acceder a los datos de usuario.
    3. Verificar la configuración del firewall – asegúrate de que los puertos necesarios estén abiertos y la configuración del firewall sea correcta para el tráfico de LDAP.
    4. Asegurarte de que el servidor tenga las dependencias necesarias instaladas – asegúrate de que el tiempo de ejecución, los paquetes y las bibliotecas necesarias estén instalados en el servidor.
    5. Verificar los permisos del servidor – asegúrate de que la identidad de la agrupación de aplicaciones tenga acceso de lectura al directorio LDAP.

    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.

Comments are closed.