当对与 Web 服务器所属域不同的域进行身份验证时,ASP.NET 登录控制与 AD 的初始连接非常慢。 IIS 服务器以及与 Visual Studio 的内置 Web 服务器一起使用时出现问题。
第一次尝试使用该控件连接另一个域时大约需要 30 秒。 Web 服务器的域和其他域之间不存在信任关系(尝试连接到多个不同的域)。后续连接会快速执行,直到连接超时。
使用Systernals Process Monitor进行故障排除,在延迟之前有两个OpenQuery操作到“C:\WINDOWS\asembly\GAC_MSIL\System.DirectoryServices\2.0.0.0_b03f5f7f11d50a3a\Netapi32.dll,结果名称未找到”和30 秒延迟后,TCP 发送和 TCP 接收表明与 AD 服务器的通信开始。
我们尝试过的事情:
- 在 web.config 中模拟网络服务器的管理员;
- 向 NetworkService 和 ASPNET 授予 CryptoKey 权限;
- 通过 IP 而不是 DNS 名称指定;
- 使用域和 OU 指定名称和 LDAP 服务器的多种变体;
- 本地主机条目;
- 使用 netstat -an 查找被阻止的端口 (SYN_SENT)。
- Nslookup 可以正确解析所有涉及的域和系统。
- TraceRt 显示正确的路线
非常感谢任何想法或提示。
最佳答案
我们最终修复了它
connectionProtection="无"
关闭安全端口上的所有连接尝试并仅使用 389。
在 connetionProtection 更改后,我们还必须指定连接用户名,例如“ad/bob”,而不仅仅是“bob”。
谢谢
埃里克-
关于Asp.Net 登录控制与非受信任 AD 域的初始连接速度非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/946550/