Asp classic ASP和LDAP:连接不能用于执行此操作。在此上下文中,它是关闭的或无效的。

Asp 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

继续使用ASP,我有一个正弦代码,它为用户提供了一个表单,该表单显示当前在Active Directory中保存的数据,并允许用户更新他们的一些详细信息。我什么都试过了,但还是出错了

ADODB.命令错误“800a0e7d”

连接无法用于执行此操作。在此上下文中,它是关闭的或无效的

/editentry.asp,第31行

不管怎样,我的代码是isL

<%@ 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没有连接设置!查看以了解更多信息