Classic ASP Active directory koppeling werkt niet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo All,

Ik ben bezig met het maken van een Active directory koppeling. Om eerst de simpelste dingen te testen ben ik begonnen met dit simepele script:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<%
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Properties("User ID") = "****"
objConnection.Properties("Password") = "****"
objConnection.Properties("Encrypt Password") = false
objConnection.Open "Provider=ADsDSOObject;"

Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConnection

objCommand.CommandText =  "LDAP://DC=ad,DC=vmware,DC=****,DC=****;;name;subtree"
Set objRecordSet = objCommand.Execute

While Not objRecordSet.EOF
 ' response.write objRecordSet.Fields("name").value
 objRecordSet.MoveNext
Wend

objConnection.Close

%>


De volgende foutmelding krijg ik:

code:
1
2
3
4
5
ADODB.Connection error '800a0cc1' 

Item cannot be found in the collection corresponding to the requested name or ordinal. 

/gvscripts/test2.asa, line 5


Ik heb gegoogled naar de error code (ookal is de beschrijving nogal duidelijk) en dat staat inderdaad voor de verkeerde naam. Echter als ik met een standaard LDAP browser kijk bestaat het veld name wel (en is ook gevult).

Wat me wel opvalt is als ik een ongeldig password gebruikt dat de melding niet veranderd. Echter als ik de 3 property regels totaal verwijder krijg ik wel een andere error:

code:
1
2
3
4
5
Provider error '80040e14'

One or more errors occurred during processing of command.

/gvscripts/test2.asa, line 10


Deze code betekent Invalid parameter 1 specified for datedif. Opzich logisch aangezien ik geen parameters mee geef. Echter door het niet geven van een loginnaam is ongeldig twijfel ik nu of de connectie uberhaupt goed geinitialiseerd word. Heeft iemand een idee hoe ik eventueel verder zou kunnen?

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Vanwaar test2.asa? Waar komt de datedif melding vandaan (die zie ik niet in je code, en het is datediff AFAIK). De melding "Item cannot be found in the collection corresponding to the requested name or ordinal" wordt waarschijnlijk veroorzaakt doordat je een veld probeert uit te lezen dat niet in de recordset aanwezig is (of inderdaad een connectie die niet goed is). Maar iets zegt me dat we niet de hele code zien...

[ Voor 5% gewijzigd door RobIII op 25-05-2009 10:16 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
De code is inderdaad onderdeel van een groter geheel maar hier losgetrokken om afzonderlijk te testen.
Net een paar updates gedaan. De nieuwe code:

code:
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
<%
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand =   CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"

objConnection.Properties("User ID") = "****"
objConnection.Properties("Password") = "****"
objConnection.Properties("Encrypt Password") = TRUE
objConnection.Properties("ADSI Flag") = 3

objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection

objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE 


objCommand.CommandText ="SELECT Name FROM 'LDAP://DC=ad' WHERE " & "objectCategory='user'"  
Set objRecordSet = objCommand.Execute

'objRecordSet.MoveFirst
'Do Until objRecordSet.EOF
'    Wscript.Echo objRecordSet.Fields("objectClass").Value
'    objRecordSet.MoveNext
'Loop
%>


En de nieuwe error :)

code:
1
2
3
4
5
Provider error '80040e37' 

Table does not exist. 

/gvscripts/test2.asa, line 20


Verschillende query's gebruikt waaronder SELECT * maar ook hier claimt het script dat de table niet bestaat |:(

Acties:
  • 0 Henk 'm!

Verwijderd

Je moet volledige DC opgeven volgens mij. In je laatste code-stuk staat alleen "dc=AD".
Table does not exist trad bij mij op als ik daar een fout in had gemaakt....

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Nope ik blijf de table melding houden :(

Acties:
  • 0 Henk 'm!

Verwijderd

Met die code zoals jij die gebruikt had ik ook problemen kan ik wel herinneren, geen idee waarom.

Zo gebruik ik hem:
ASP:
1
2
3
4
5
6
strDCHost = "dc=loc,dc=tld"
Set Connect = CreateObject("ADODB.Connection")
Connect.Provider = "ADsDSOObject"
Connect.Open "DS Query"

Query = "<LDAP://" & strDCHost & ">;(" & Query & ");"

Met Query de query logischerwijs :)
Pagina: 1