Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net PrincipalContext.ValidateCredentials是如何工作的?_Asp.net_Active Directory_Principalcontext - Fatal编程技术网

Asp.net PrincipalContext.ValidateCredentials是如何工作的?

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秒延迟(在这些行之前和之后都有直接

我已经搜索了整个堆栈,但没有找到对我的情况有帮助的答案。我们在不同的服务器上有两个web应用程序。两者都使用完全相同的标准代码进行Active Directory身份验证。并且目标LDAP服务器在所有情况下都是相同的

使用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
网络环境中发生了一些无法识别的变化。但是添加这个参数消除了延迟