【问题标题】:Why is it that my VBS script file doesn't work when copied to my ASP page?为什么我的 VBS 脚本文件在复制到我的 ASP 页面时不起作用?
【发布时间】:2012-06-30 13:32:33
【问题描述】:

当从命令窗口调用时,我的脚本查询 Active Directory 可以正常工作,但它在我的 ASP 页面上不起作用。而不是 VBS 文件中的echo("message"),我使用 Response.Redirect(message) 在我的 ASP 中。所以这里的代码在 CMD 窗口中运行良好,但在 IE 中不行。无论如何,我希望有人可以提供帮助。

Option Explicit

Dim objRootDSE, strDNSDomain, objCommand, objConnection
Dim strQuery, strBase, strFilter, strAttributes
Dim objRecordSet, strAlias, strName, strSAM
Dim blnFlag

''// Use ADO to search Active Directory.
Set objCommand = CreateObject("ADODB.Command")
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
objCommand.ActiveConnection = objConnection

''// Set AD query propeties
strBase = "<LDAP://10.10.10.10>"
strFilter = "(&(objectCategory=person)(objectClass=user)(cn="gossmari")"
strAttributes = "displayName,mailNickname,sAMAccountName"

''// AD query
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
objCommand.CommandText = strQuery
objCommand.Properties("Page Size") = 100
objCommand.Properties("Cache Results") = False
Set objRecordSet = objCommand.Execute

    Do Until objRecordSet.EOF
       strName = objRecordSet.Fields("displayName")
       strAlias = objRecordSet.Fields("mailNickname")
       strSAM = objRecordSet.Fields("sAMAccountName")
       objRecordSet.MoveNext
    Loop

''// Echo the requested information 
''// replaced by Response.Redirect("http://www.google.com/" & strName)
Wscript.Echo strSAM & " ; " & strAlias & " ;   " & strName

objConnection.Close

编辑:我不断收到的错误是: 处理 URL 时服务器发生错误。请联系系统管理员。 如果您是系统管理员,请单击此处了解有关此错误的更多信息。

我的电脑运行的是 windows vista,我真的开始讨厌它了

【问题讨论】:

  • 该代码也不会作为 VBS 运行。您在以 strFilter 开头的行上有一个报价问题...此外,它对您收到的错误消息也很有帮助。 (也 Response.Redirect 重定向浏览器, Response.Write 写出东西..)

标签: asp-classic vbscript active-directory


【解决方案1】:

返回什么错误?

一个可能的原因可能是 ASP 页面在其下执行的凭据没有查询 Active Directory 的权限。如果它是一个默认网页,它可能使用匿名身份验证运行,它转换为 [LOCALMACHINE]\IUSR_[LOCALMACHINE]。

这可以解释为什么它在您的凭据下运行时运行,而不是在 IIS 的上下文中运行。

【讨论】:

    【解决方案2】:

    实际上向我们提供错误消息会有所帮助。

    如果您在开箱即用的情况下运行 IE,您将看不到它。转到工具、Internet 选项、高级选项卡并关闭“显示友好的 HTTP 错误消息”

    由于默认匿名 IIS 用户运行的安全上下文,通常无法访问活动目录等内容,因此如果您切换到集成安全性,您可能会走得更远。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-23
      • 2015-01-30
      • 2019-05-15
      • 1970-01-01
      • 1970-01-01
      • 2016-11-03
      • 2012-10-07
      相关资源
      最近更新 更多