You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行ASP.NET Web应用提示用户名或密码不正确错误如何解决

问题排查与解决方案

1. 校验LDAP连接与绑定身份配置

  • 首先确认web.config中AppSettings节点的LDAP配置值是否正确,标准格式为LDAP://你的域地址/DC=你的域名,DC=后缀,注意协议头LDAP必须为大写,路径后缀的域组件需要和实际AD域配置完全匹配。
  • 当前代码创建DirectoryEntry对象时没有显式传入账号密码,默认会使用当前Web进程的身份进行LDAP绑定,若需要跨域访问或指定AD查询身份,需要修改第12行代码,传入拥有AD查询权限的账号密码:
' 用户名格式支持 域\账号 或 账号@域地址 两种形式
Dim de As System.DirectoryServices.DirectoryEntry = New System.DirectoryServices.DirectoryEntry(LDAP, ad查询账号, ad查询密码)
  • 若确认要使用应用程序池身份绑定,需要先检查应用程序池配置的身份账号密码未过期、未被域锁定,且该账号拥有AD查询权限,修改应用池身份后必须回收应用池才会生效。

2. 校验用户名解析逻辑

  • 确认第11行的userName变量取值是否为域\账号格式,若不存在\字符,IndexOf('\')会返回-1,导致sAMAccountName取值错误,最终查询的账号名与AD存储值不匹配。
  • 可以增加临时日志输出sAMAccountName的实际取值,确认和AD中对应用户的sAMAccountName属性一致。

3. 排除AD访问连通性问题

  • 可以在Web服务器本地使用系统自带的ldp.exe工具,输入对应LDAP地址和绑定账号密码执行查询测试,确认可以正常返回用户结果,排除服务器到AD域控制器的网络连通问题、端口拦截问题(LDAP默认端口389,SSL模式端口636)。

4. 补充防御性代码

  • 第15行FindOne()如果未匹配到用户会返回空值,后续直接读取Properties会触发空引用异常,建议增加空值判断:
Dim result As System.DirectoryServices.SearchResult = ds.FindOne()
If result IsNot Nothing Then
    dim qq=result.Properties("memberOf")
    dim sid=BitConverter.ToString(result.Properties("objectSID")(0))
End If

内容的提问来源于stack exchange,提问作者godpick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 22:15:02