[vb.net] Value cannot be null

Pagina: 1
Acties:

  • Praetorian
  • Registratie: November 2001
  • Laatst online: 19-05 11:27
Ik ben bezig een scriptje te maken om wat dingen af te handelen in Active Directory, daarvoor heb ik de volgende basis gemaakt:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub cmdZoeken_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdZoeken.Click
        Dim enTry As DirectoryServices.DirectoryEntry = New DirectoryServices.DirectoryEntry("LDAP://domein van werk")
        Dim mySearcher As DirectoryServices.DirectorySearcher = New DirectoryServices.DirectorySearcher(enTry)
        mySearcher.Filter = "(objectClass=user)"

        Dim resEnt As DirectoryServices.SearchResult

        For Each resEnt In mySearcher.FindAll()
            ListBox.Items.Add(resEnt.GetDirectoryEntry.Username)
        Next


    End Sub


Het begint al gelijk goed, ik krijg de error:

"Value cannot be null"

Nu begrijp ik alleerst niet hoe een username leeg kan zijn, maar goed... dat terzijde.
Hoe vang ik dit af?

Ik heb het al geprobeerd met try en catch, maar vermoedelijk op de verkeerde plaats gebruikt of kan niet in een for next??

  • pjvandesande
  • Registratie: Maart 2004
  • Nu online

pjvandesande

GC.Collect(head);

Je kan toch gewoon alles tracen? En met try -catch kan hij wel je debugger inspringen als jij dit ingesteld hebt in de instellingen.

toevoeging
Waar krijg je een exception, welke statement?

[ Voor 21% gewijzigd door pjvandesande op 27-10-2004 13:42 ]


  • Praetorian
  • Registratie: November 2001
  • Laatst online: 19-05 11:27
Ik krijg hem op:
code:
1
ListBox.Items.Add(resEnt.GetDirectoryEntry.Username)


An unhandled exception of type 'System.ArgumentNullException' occurred in system.windows.forms.dll

Waarom moet ik tracen dan, ik weet waar het hem in zit, alleen niet hoe het op te lossen is? Try en catch geprobeerd, maar waar moet je in vredesnaam beginnen met een try als je gebruik maakt van een for/next... je mag het nergens meer plaatsen in vb.net :S

  • pjvandesande
  • Registratie: Maart 2004
  • Nu online

pjvandesande

GC.Collect(head);

Waarom is het null, controlleer het altijd op null-waarde als een method deze exception kan gooien en jou object zou null kunnen zijn.

De try -catch kun je gewoon alleen rond deze lijn plaatsen als je dat wilt. Ik weet niet of het process door mag lopen als er 1 null tussen zit. Je kan ook zo iets doen:

C#:
1
2
3
4
5
6
7
string username = resEnt.GetDirectoryEntry.Username;
if(username != null)
     ListBox.Items.Add(username);
else
{
     // Hij was null.
}

  • Praetorian
  • Registratie: November 2001
  • Laatst online: 19-05 11:27
Oke het gelukt nu, wat was nu het probleem...

Alles wat gereturned werd was 0, helemaal leeg, op een gegeven moment lukte het met de try/catch, stond gewoon verkeerd..

Maar omdat alles 0 was, ging ik verder zoeken, blijkt dat de GetDirectoryEntry.Username altijd null is??

Nu gebruik ik:

ListBox.Items.Add(resEnt.GetDirectoryEntry.Properties.Item("samaccountname").Value)

:)
Dank voor je hulp

  • pjvandesande
  • Registratie: Maart 2004
  • Nu online

pjvandesande

GC.Collect(head);

Controleer voor de zekerheid op een null -waarden. Je krijgt namelijk een null -waarde terug als het niet gevonden is.

Dus altijd even op controleren en afhandelen.
Pagina: 1