Asp classic ASP和LDAP:连接不能用于执行此操作。在此上下文中,它是关闭的或无效的。
继续使用ASP,我有一个正弦代码,它为用户提供了一个表单,该表单显示当前在Active Directory中保存的数据,并允许用户更新他们的一些详细信息。我什么都试过了,但还是出错了 ADODB.命令错误“800a0e7d” 连接无法用于执行此操作。在此上下文中,它是关闭的或无效的 /editentry.asp,第31行 不管怎样,我的代码是isLAsp classic ASP和LDAP:连接不能用于执行此操作。在此上下文中,它是关闭的或无效的。,asp-classic,active-directory,Asp Classic,Active Directory,继续使用ASP,我有一个正弦代码,它为用户提供了一个表单,该表单显示当前在Active Directory中保存的数据,并允许用户更新他们的一些详细信息。我什么都试过了,但还是出错了 ADODB.命令错误“800a0e7d” 连接无法用于执行此操作。在此上下文中,它是关闭的或无效的 /editentry.asp,第31行 不管怎样,我的代码是isL <%@ Language=VBScript %> <% response.Buffer = True 'Define the A
<%@ Language=VBScript %>
<% response.Buffer = True
'Define the AD OU that contains our users
dim ADUser, user, firstname, lastname, email, telephonenumber, mobile
'This initializes all of our variables
user = request.querystring("account_name")
'This puts the value of the account_name into a variable
if len(user) = 0 then
'If the length of the username is equal to 0
response.write "Please supply a username in the query string"
elseif len(user) > 0 then
'Else is length of user is greater than 0
ADUser = "LDAP://OU=Staff,OU=Users,DC=Something,DC=internal"
' Make AD connection and run query
Set objCon = Server.CreateObject("ADODB.Connection")
objCon.provider ="ADsDSOObject"
objCon.Properties("User ID") = "EXAMPLE\Testuser"
objCon.Properties("Password") = "TestUser1!"
objCon.Properties("Encrypt Password") = TRUE
objCon.open "Active Directory Provider"
Set objCom = CreateObject("ADODB.Command")
objCom.CommandText ="select ADsPath, givenName,sn,mail,telephonenumber,mobile,sAMAccountName FROM '"+ ADUser +"' where sAMAccountname='"& user & "'"
'objCom.Properties("searchscope") = ADS_SCOPE_ONELEVEL
Set objRS = objCom.Execute
' Loop over returned recordset and output HTML
Response.Write vbCrLf
Do While Not objRS.EOF Or objRS.BOF
Response.Write " <form action='editentry.asp?account_name=" + user + "' method='POST'>"
Response.Write "<p><label for='firstname'>Firstname</label><input type='text' id='firstname' value='" + objRS("givenName") +"' name='fname'></p>"
Response.Write "<p><label for='lastname'>Lastname</label><input type='text' id='lastname' value='" + objRS("sn") +"' name='lname'></p>"
Response.Write "<p><label for='mail'>E-Mail Address</label><input type='text' id='lastname' value='" + objRS("mail") +"' name='email'></p>"
Response.Write "<p><label for='mobile'>Mobile</label><input type='text' id='mobile' value='" + objRS("mobile") +"' name='mobile'></p>"
Response.Write "<p><label for='telephone'>Telephone Number</label><input type='text' id='email' value='" + objRS("telephonenumber") +"' name='telephonenumber'></p>"
Response.Write "<p><input type='hidden' id='subval' value='1' name='subval'></p>"
Response.Write "<p><input type='submit' name='submit'><input type='reset' name='reset'></p>"
Response.Write "</form>" + vbCrLf
objRS.MoveNext
Response.Flush
Loop
if isEmpty(request.form("subval"))=FALSE then
'Subval will contain 1 if the form is submitted, else it won't exist, so we can check the form has been submitted by reading it back
firstname = request.form("fname")
lastname = request.form("lname")
email = request.form("email")
mobile = request.form("mobile")
telephonenumber = request.form("telephonenumber")
Do While Not objRS.EOF
Set usr = GetObject(objRS.Fields("ADsPath").Value)
usr.Put "gjvenName", firstname
usr.Put "sn", lastname
usr.Put "mail", email
usr.Put "mobile", mobile
usr.Put "telephonenumber", telephonenumber
usr.SetInfo
objRS.MoveNext
loop
response.write "Entry has been updated "
end if
end if
' Clean up
objRS.Close
objCon.Close
Set objRS = Nothing
Set objCon = Nothing
Set objCom = Nothing
%>
我不确定这里出了什么问题在调用Execute函数之前分配command对象的连接,如下所示:
Set objCom.ActiveConnection = objCon
objCom没有连接设置!查看以了解更多信息