Conexion LDAP con C#

xTr3m1S

Pues vereis, me han pedido que haga un programa que se conecte con un directorio activo y saque de todas las cuentas de usuario que haya un dato. Yo de LDAP no tengo ni puta idea pero gracias a google he sacado lo siguiente:

namespace ConnectLDAP
{
[DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true)]

public class LDAPConnect
{
    static LdapConnection ldapConnection;
    static string ldapServer;
    static NetworkCredential credential;
    static string targetOU;

    public static void Main(string[] args)
    {
        try
        {
            string[] variables = {"Win2k3R2EE.wiki.yo.es","Administrator","Evaluation1","wiki.yo.es","OU=Users,DC=wiki,DC=yo,DC=es" };
            GetParameters(variables);
            ldapConnection = new LdapConnection(ldapServer);
            ldapConnection.Credential = credential;
            Console.WriteLine("LdapConnection is created successfully.");

            DirectoryEntry deOU = new DirectoryEntry("LDAP://ou=Users,dc=wiki,dc=yo,dc=es");
            DirectorySearcher dsUsers = new DirectorySearcher(deOU);
            dsUsers.Filter = "(&(objectClass=user)(objectCategory=Person))";
            dsUsers.PropertiesToLoad.Add("First Name");
            foreach (SearchResult oResult in dsUsers.FindAll())
            {
                Console.WriteLine(oResult.ToString());
            }
            Console.ReadLine();
        }
        catch (Exception e)
        {
            Console.WriteLine("\r\nUnexpected exception occured:\r\n\t" + e.GetType() + ":" + e.Message);
            Console.ReadLine();
        }
    }

    static void GetParameters(string[] datos)
    {
        ldapServer = datos[0];
        credential = new NetworkCredential(datos[1], datos[2], datos[3]);
        targetOU = datos[4];
    }
}

}

Del codigo que he puesto me funciona todo menos el foreach, cuando llega ahi me salta el catch y no tengo ni idea de a que es debido, a ver si podeis echarme un cable.

Gracias.

B

Si posteas el error que te da el catch quiza nos podemos hacer una idea...

xTr3m1S

cierto, se me paso xD

System.DirectoryServices.DirectoryServicesCOMException: El servidor ha devuelto una referencia.

Ese es el error que devuelve el catch

NeB1

#3 supongo que te devuelve un puntero

xTr3m1S

ya lo he resuleto, al final era que tenia la conexion mal hecha y he optado por rehacer el codigo

kas

#4 C# no usa punteros, gracias a dios (aunque puede usarlos con unsafe, cosa que esta aboslutamente desaconsejado).

Usuarios habituales