Ciao a tutti,
lo scenario è quello di un'applicazione in cui le utenze vengono prese da active directory ed inserite in una tabella del database della mia applicazione per gestire le politiche di accesso alle varie aree dell'applicazione.

Una verifica che avviene in fase di login è il fatto se l'utente o meno attivo a livello di active directory, perché in caso non risulti attivo deve essere negato l'accesso all'applicazione.
Ciò avviene andando a verificare il valore della proprietà useraccountcontrol.

Il mio problema è che per alcuni utenti, questa proprietà non viene letta mandandomi in errore la procedura di login.

Il codice che uso per recuperare la proprietà è il seguente:

Dim deSearchRoot As New DirectoryEntry(AppSettings.Get("LDAP"))
Dim dsSearch As New DirectorySearcher(deSearchRoot)
dsSearch.Filter = $"(&(objectClass=user)(objectCategory=person)(!cn=HealthMailbox*)(samaccountname={Me.txtNomeUtente.Text}))"
Dim result As SearchResult = dsSearch.FindOne()
If result.Properties("useraccountcontrol")(0).ToString = ...

Praticamente quando vado a leggere il valore result.Properties("useraccountcontrol")(0).ToString, per taluni utenti, ricevo l'errore "indice oltre le dimensioni della matrice".
L'utente viene caricato per il nome utente lo visualizzo.

Qualcuno ha suggerimenti in merito?

Grazie anticipatamente per i suggerimenti.

Alessio Arrigoni - CONSULENTE INFORMATICO
http://www.alessioarrigoni.it
http://blog.alessioarrigoni.it
Beh sicuramente devi aggiungere

if(result.Properties("useraccountcontrol") != null)


poi bisogna capire perché nel tuo caso è nullo. Magari problemi di spaziatura nel .Text?

Ormai programmano tutti... ma la professionalità appartiene a pochi

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.