Foros del Web » Programación para mayores de 30 ;) » .NET »

[SOLUCIONADO] Error en función de directorio activo

Estas en el tema de Error en función de directorio activo en el foro de .NET en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 11/01/2013, 04:31
 
Fecha de Ingreso: abril-2012
Mensajes: 449
Antigüedad: 12 años, 1 mes
Puntos: 7
Exclamación Error en función de directorio activo

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 original
  1. Public Function FullName(ByVal user As String, ByVal pass As String) As String
  2.         'Dim dirEntry As New DirectoryEntry("LDAP://servername/DC=servername,DC=com", strDomain & "\" & user, pass)
  3.         Dim adsEntry As New DirectoryEntry("LDAP://192.168.1.108/DC=indar,DC=local", user, pass)
  4.         Dim deSearch As New DirectorySearcher(adsEntry)
  5.         Dim properties() As String = {"fullname"}
  6.         deSearch.SearchScope = SearchScope.Subtree
  7.         deSearch.ReferralChasing = ReferralChasingOption.All
  8.         deSearch.PropertiesToLoad.AddRange(properties)
  9.         deSearch.Filter = "sAMAccountName=" + user + ")"
  10.  
  11.         Dim result As SearchResult
  12.         result = deSearch.FindOne()
  13.         Dim directoryEntry As New DirectoryEntry
  14.         directoryEntry = result.GetDirectoryEntry()
  15.         Dim displayname As String
  16.         displayname = directoryEntry.Properties("displayname")(0).ToString()
  17.         Return displayname
  18.     End Function

__________________
Gracias por todo;

Un saludo
  #2 (permalink)  
Antiguo 11/01/2013, 06:52
 
Fecha de Ingreso: abril-2012
Mensajes: 449
Antigüedad: 12 años, 1 mes
Puntos: 7
Respuesta: Error en función de directorio activo

Cita:
Iniciado por maialenlopez Ver Mensaje
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 original
  1. Public Function FullName(ByVal user As String, ByVal pass As String) As String
  2.         'Dim dirEntry As New DirectoryEntry("LDAP://servername/DC=servername,DC=com", strDomain & "\" & user, pass)
  3.         Dim adsEntry As New DirectoryEntry("LDAP://192.168.1.108/DC=indar,DC=local", user, pass)
  4.         Dim deSearch As New DirectorySearcher(adsEntry)
  5.         Dim properties() As String = {"fullname"}
  6.         deSearch.SearchScope = SearchScope.Subtree
  7.         deSearch.ReferralChasing = ReferralChasingOption.All
  8.         deSearch.PropertiesToLoad.AddRange(properties)
  9.         deSearch.Filter = "sAMAccountName=" + user + ")"
  10.  
  11.         Dim result As SearchResult
  12.         result = deSearch.FindOne()
  13.         Dim directoryEntry As New DirectoryEntry
  14.         directoryEntry = result.GetDirectoryEntry()
  15.         Dim displayname As String
  16.         displayname = directoryEntry.Properties("displayname")(0).ToString()
  17.         Return displayname
  18.     End Function


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 original
  1. Public Function FullName(ByVal user As String, ByVal pass As String) As String
  2.         'Dim dirEntry As New DirectoryEntry("LDAP://servername/DC=servername,DC=com", strDomain & "\" & user, pass)
  3.         Dim adsEntry As New DirectoryEntry("LDAP://192.168.1.108/DC=indar,DC=local", user, pass)
  4.         Dim deSearch As New DirectorySearcher(adsEntry)
  5.         Dim properties() As String = {"fullname"}
  6.         deSearch.SearchScope = SearchScope.Subtree
  7.         deSearch.ReferralChasing = ReferralChasingOption.All
  8.         deSearch.PropertiesToLoad.AddRange(properties)
  9.         deSearch.Filter = "(sAMAccountName=" + user + ")"
  10.  
  11.         Dim result As SearchResult
  12.         result = deSearch.FindOne()
  13.         Dim directoryEntry As New DirectoryEntry
  14.         directoryEntry = result.GetDirectoryEntry()
  15.         Dim displayname As String
  16.         displayname = directoryEntry.Properties("displayname")(0).ToString()
  17.         Return displayname
  18.     End Function



Perdon por las molestias
__________________
Gracias por todo;

Un saludo

Etiquetas: activo, directorio, net, server, vb
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:19.