0

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

Using ctx As New PrincipalContext(ContextType.Domain) If ctx.ValidateCredentials(un_in, pw_in) Then...

但是,在一种情况下,这两行会立即执行,而另一种情况下则有 21 秒的延迟(在这些行之前和之后直接记录)。对于慢的,无论环境如何,它都很慢,即在我们的 dev/test/stage/prod 服务器上。

我们不知道要检查什么。基本的网络连接检查显示没有延迟,而且这发生在 4 个不同的服务器上。与域控制器的连接,据我所知,IIS 是如何知道要检查哪个 LDAP 服务器的?想法?

4

1 回答 1

0

万一有人遇到这种情况。解决方案是在代码中添加一个参数 ContextOptions.Negotiate:

Using ctx As New PrincipalContext(ContextType.Domain)
  If ctx.ValidateCredentials(un_in, pw_in, **ContextOptions.Negotiate**) Then

网络环境中的某些东西发生了变化,没有人可以识别。但是添加这个参数消除了延迟。

于 2021-04-29T13:23:30.457 回答