Cita:
Iniciado por maialenlopez
Estoy programando una aplicación web en vb.net la cual necesita tener acceso mediante el directorio activo. He conseguido que si el usuario y la contraseña están bien llame a esta función que muestro abajo y con ella lo que quiero es coger el nombre de la persona que ha accedido mediante el directorio activo. Pero tengo un problema. He depurado la función y cuando llega a este punto
directoryEntry = result.GetDirectoryEntry() me lanza un error de
referencia a objeto no establecida como instancia a un objeto. ¿Me podéis ayudar con esto o decirme otra manera de obtener el nombre de la persona que ha accedido mediante el directorio activo?
Código vb.net:
Ver originalPublic Function FullName(ByVal user As String, ByVal pass As String) As String
'Dim dirEntry As New DirectoryEntry("LDAP://servername/DC=servername,DC=com", strDomain & "\" & user, pass)
Dim adsEntry As New DirectoryEntry("LDAP://192.168.1.108/DC=indar,DC=local", user, pass)
Dim deSearch As New DirectorySearcher(adsEntry)
Dim properties() As String = {"fullname"}
deSearch.SearchScope = SearchScope.Subtree
deSearch.ReferralChasing = ReferralChasingOption.All
deSearch.PropertiesToLoad.AddRange(properties)
deSearch.Filter = "sAMAccountName=" + user + ")"
Dim result As SearchResult
result = deSearch.FindOne()
Dim directoryEntry As New DirectoryEntry
directoryEntry = result.GetDirectoryEntry()
Dim displayname As String
displayname = directoryEntry.Properties("displayname")(0).ToString()
Return displayname
End Function
![Confundido](http://static.forosdelweb.com/fdwtheme/images/smilies/confused.png)
Ya lo he conseguido era un error que tenia en la función Fullname que se me había colado un paréntesis . Poniendo el código así va perfecto:
Código vb.net:
Ver originalPublic Function FullName(ByVal user As String, ByVal pass As String) As String
'Dim dirEntry As New DirectoryEntry("LDAP://servername/DC=servername,DC=com", strDomain & "\" & user, pass)
Dim adsEntry As New DirectoryEntry("LDAP://192.168.1.108/DC=indar,DC=local", user, pass)
Dim deSearch As New DirectorySearcher(adsEntry)
Dim properties() As String = {"fullname"}
deSearch.SearchScope = SearchScope.Subtree
deSearch.ReferralChasing = ReferralChasingOption.All
deSearch.PropertiesToLoad.AddRange(properties)
deSearch.Filter = "(sAMAccountName=" + user + ")"
Dim result As SearchResult
result = deSearch.FindOne()
Dim directoryEntry As New DirectoryEntry
directoryEntry = result.GetDirectoryEntry()
Dim displayname As String
displayname = directoryEntry.Properties("displayname")(0).ToString()
Return displayname
End Function
Perdon por las molestias