IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Active directory. Impossible de l'utiliser plusieurs fois


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Active directory. Impossible de l'utiliser plusieurs fois
    Bonjour,
    Dans la série j'ai des problèmes, je vous présente.....
    Donc, je suis entrain de créer un site intranet dans lequel je dois me connecter à un Active Directory.
    Pour me faciliter la tâche, je me suis créé une classe me permettant d'interagir avec l'active directory.
    Voici ma classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    Imports Microsoft.VisualBasic
    Imports System.DirectoryServices
    Public Class ActiveDirectory
     
        Private o_Directory As DirectoryEntry
        Public Sub New(ByVal TheAdresseAccess As String, ByVal TheLogin As String, ByVal ThePassword As String)
     
            Try
                o_Directory = New DirectoryEntry(TheAdresseAccess, TheLogin, ThePassword)
            Catch ex As Exception
                MsgBox("Impossible de se connecter à l'ActiveDirectory")
            End Try
     
        End Sub
     
        Public Function ChercherUtilisateur(ByVal TheLoginUtilisateur As String) As DirectoryEntry
            Dim ARetourner As DirectoryEntry = Nothing
            ' On créer un objet permettant de faire une recherche dans l'active directory
            Dim o_search As DirectorySearcher = New DirectorySearcher(o_Directory)
            ' On applique un filtre de recherche pour récupérer l'utilisateur qu'on veut
            o_search.Filter = "(SAMAccountName=" & TheLoginUtilisateur & ")"
            Dim Resultat As SearchResult = Nothing
            ' On exécute la recherche et on ne récupère que le premier élément retourné
                Resultat = o_search.FindOne()
     
            ARetourner = Resultat.GetDirectoryEntry
     
            Return ARetourner
        End Function
     
        Public Function NomComplet(ByVal TheLogin As String) As String
            Dim ARetourner As String = ""
            Dim o_DirectoryEntry As DirectoryEntry
            o_DirectoryEntry = Me.ChercherUtilisateur(TheLogin)
            With o_DirectoryEntry
                ARetourner = String.Concat(UCase(.Properties("sn").Value), " ", .Properties("givenName").Value)
            End With
            Return ARetourner
        End Function
    End Class
    Que j'utilise de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim o_ActiveDirectoryUser As ActiveDirectory = Nothing
     
                ' On se connecte au serveur active directory
                o_ActiveDirectoryUser = New ActiveDirectory("LDAP://" & WebConfigurationManager.AppSettings("ActiveDirectoryServeur"), _
                                                            WebConfigurationManager.AppSettings("ActiveDirectoryLogin"), _
                                                            WebConfigurationManager.AppSettings("ActiveDirectoryPassword"))
     
                ' On récupère le résultat retourné par la recherche effectuée via le login de l'utilisateur
                Dim Resultat As DirectoryEntry = o_ActiveDirectoryUser.ChercherUtilisateur(Session("Utilisateur"))
                Session("NomUser") = Resultat.Properties("sn").Value
                Session("PrenomUser") = Resultat.Properties("givenName").Value
                Session("EmailUser") = Resultat.Properties("mail").Value
                Session("CompletUser") = o_ActiveDirectoryUser.NomComplet(Session("Utilisateur"))
    Donc, lorsqu'un utilisateur arrive sur la page, je me connecte à l'active directory et je récupère quelques données. Jusque là, tout va bien.
    Mais, lorsque j'arrive sur une page et que je dois effectuer une recherche dans l'active directory, j'ai une erreur à a ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Resultat = o_search.FindOne()
    Cette erreur est :
    L'exception COMException n'a pas été géré par le code utilisateur
    Erreur non spécifiée
    Et cette erreur s'applique quand j'appelle la méthode NomComplet qui utilise ChercheUtilisateur ou même lorsque j'appelle directement la méthode ChercheUtilisateur. Mais, comme je l'ai précisé plus haut, cette erreur ne se déclare qu'à la seconde utilisation de l'active directory, quel que soit la page d'appel.

    Merci d'avance à ceux qui pourront m'aider.

    EDIT : Problème résolu, j'avais oublié de mettre le protocole dans la seconde utilisation de l'active directory.
    Dernière modification par Invité ; 09/03/2010 à 07h27.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 07/04/2008, 17h40
  2. Utiliser plusieurs fois le même composant
    Par Ren97 dans le forum Composants VCL
    Réponses: 6
    Dernier message: 01/03/2008, 01h49
  3. Utiliser plusieurs fois ma classe en même temps
    Par Princeless74 dans le forum C++
    Réponses: 6
    Dernier message: 05/01/2008, 21h54
  4. Réponses: 5
    Dernier message: 24/08/2006, 15h00
  5. Réponses: 2
    Dernier message: 22/05/2006, 14h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo