Asp.net PrincipalContext.ValidateCredentials是如何工作的?
我已经搜索了整个堆栈,但没有找到对我的情况有帮助的答案。我们在不同的服务器上有两个web应用程序。两者都使用完全相同的标准代码进行Active Directory身份验证。并且目标LDAP服务器在所有情况下都是相同的Asp.net PrincipalContext.ValidateCredentials是如何工作的?,asp.net,active-directory,principalcontext,Asp.net,Active Directory,Principalcontext,我已经搜索了整个堆栈,但没有找到对我的情况有帮助的答案。我们在不同的服务器上有两个web应用程序。两者都使用完全相同的标准代码进行Active Directory身份验证。并且目标LDAP服务器在所有情况下都是相同的 使用ctx作为新的PrincipalContext(ContextType.Domain)如果ctx.ValidateCredentials(un_in,pw_in)那么… 然而,在一种情况下,这两行是瞬时执行的,而在另一种情况下,有一个一致的21秒延迟(在这些行之前和之后都有直接
使用ctx作为新的PrincipalContext(ContextType.Domain)如果ctx.ValidateCredentials(un_in,pw_in)那么…
然而,在一种情况下,这两行是瞬时执行的,而在另一种情况下,有一个一致的21秒延迟(在这些行之前和之后都有直接的日志记录)。对于慢的一个,不管环境如何,它都是慢的,即在我们的dev/test/stage/prod服务器上
我们不知道该检查什么。基本的网络连接检查显示没有延迟,而且这种情况发生在4台不同的服务器上。连接到域控制器,据我所知,这是IIS如何知道可能要检查哪个LDAP服务器的?。想法?以防有人遇到这种情况。解决方案是在代码中添加一个参数ContextOptions.Negotiate:
Using ctx As New PrincipalContext(ContextType.Domain)
If ctx.ValidateCredentials(un_in, pw_in, **ContextOptions.Negotiate**) Then
网络环境中发生了一些无法识别的变化。但是添加这个参数消除了延迟