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 :
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
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
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.
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"))
Mais, lorsque j'arrive sur une page et que je dois effectuer une recherche dans l'active directory, j'ai une erreur à a ligneCette erreur est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Resultat = o_search.FindOne()
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.L'exception COMException n'a pas été géré par le code utilisateur
Erreur non spécifiée
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.
Partager