Tengo un dropdownlist que estoy tratando de llenar con los usuarios que pertenecen a un determinado grupo en Active Directory.

El nombre del grupo es OverRiders y 8 personas son miembros de este grupo. Más miembros se podría añadir.

Tengo el siguiente desplegable, pero puedo ejecutar el código, la lista está en blanco.

¿Qué estoy haciendo mal?

Por favor vea el código:

        Private Sub FillDropdown()
    Dim oroot As DirectoryEntry = New DirectoryEntry("LDAP://CN=OverRiders,OU=Departments,DC=domain,DC=com")
Dim osearcher As DirectorySearcher = New DirectorySearcher(oroot)
Dim oresult As SearchResultCollection
Dim result As SearchResult
Dim list As New List(Of String)

    osearcher.Filter = "(&(objectCategory=group)(cn={0}))"
    ' search filter; only display emp with firstname /lastname pair
    osearcher.PropertiesToLoad.Add("name") ' member
    oresult = osearcher.FindAll()


    For Each result In oresult
        If Not result.GetDirectoryEntry.Properties("name").Value Is Nothing Then
            list.Add(result.GetDirectoryEntry.Properties("name").Value.ToString())
            Call list.Sort()
        End If
Next
emplist.DataSource = list
emplist.DataBind()

End Sub

He sido capaz de confirmar que el grupo existe y el nombre del grupo es válida.
Muchas gracias de antemano

  • Usted necesita comenzar por comprobar si su oresult objeto está vacío o no. Si es entonces su filtro de búsqueda LDAP no está funcionando correctamente. Si no es así entonces el atributo que está buscando no existe. Averiguar esto y háganoslo saber.
  • He hecho las comprobaciones ya. Hay algo de malo en ello: ‘osearcher.Filter = «(&(objectCategory=grupo)(cn={0}))»‘ no estoy seguro de lo que el objectcategory debe ser o si no debe ser objectClass. Esperemos que, más expertos con experiencia me puede ayudar. Honestamente yo no sería difícil averiguar lo que estoy haciendo mal.
  • Sólo puedo hablar desde la experiencia; la consulta LDAP puedo usar para una intranet directorio telefónico de la aplicación es (&(objectClass=persona)(telephoneNumber=*) y luego añadir uno o más filtros dependiendo de lo que el usuario está buscando (es decir, (SN=»apellido»*)). Me gustaría probar el objectCategory / objectClass consulta primero y ver si usted recibe una respuesta de su ANUNCIO antes de intentar estrecho de cosas más.
  • Yo tengo un dropdownlist que funciona a la perfección. La única diferencia entre este dropdownlist que he publicado anteriormente y que funciona a la perfección es que esta la he publicado está buscando para los usuarios de un grupo ESPECÍFICO mientras que el que funciona las consultas de todos los usuarios de Active Directory. Por lo tanto, hay algo que estoy seguro de que necesita ser ajustado con el objectcategory y de clase, supongo.
  • Suena como él. Tal vez usted podría utilizar sólo la consulta que funciona y escribir su propio filtro fuera del Sistema.DirectoryServices para encontrar lo que usted necesita? No es óptima, pero una solución, no obstante.
InformationsquelleAutor Chidi Okeh | 2013-02-05

2 Comentarios

  1. 2

    Cambiado:

    Dim oroot As DirectoryEntry = New DirectoryEntry("LDAP://CN=OverRiders,OU=Departments,DC=domain,DC=com")

    a

    Dim oroot As DirectoryEntry = New DirectoryEntry("LDAP://DC=domain,DC=com")

    y este:

    osearcher.Filter = "(&(objectCategory=group)(cn={0}))"

    a este:

    osearcher.Filter = "(&(objectCategory=user)(memberOf=CN=overRiders,OU=Departments,DC=domain,DC=com)‌​)"

    Todo lo demás permanecen sin cambios.

    Espero que ayude a alguien más.

  2. 0

    Sé que esta es una vieja cuestión, pero esto es lo que funcionó para mí en una situación similar:

        Dim UsersInGroup As New Collection()
    
        Dim de As New DirectoryEntry("LDAP://[Domain]")
    
        Dim MemberSearcher As New DirectorySearcher
    
        With MemberSearcher
            .SearchRoot = de
            .Filter = "(&(ObjectClass=Group)(CN=" & Group & "))"
            .PropertiesToLoad.Add("Member")
        End With
    
        Dim mySearchResults As SearchResult = MemberSearcher.FindOne()
    
        For Each User In mySearchResults.Properties("Member")
            UsersInGroup.Add(User)
        Next

Dejar respuesta

Please enter your comment!
Please enter your name here