使用NetBios名称,PrincipalContext.ValidateCredentials在受信任域中变慢

Ger*_*erm 4 c# asp.net ldap active-directory

我已经创建了一个服务,使用System.DirectoryServices.AccountManagement验证针对Active Directory的凭据.我需要针对本地域以及可信域验证凭据.在我的计算机上运行时,本地和受信任域的验证凭据的响应时间很快.当我将此服务移动到我们的服务器时,本地域响应很快,但受信任的域响应非常慢(20 - 30秒).

我还发现,如果我将PrincipalContext中的域名从NetBios名称更改为DNS名称,则会更正服务器上的性能问题.

这是一些例子

PrincipalContext context = new PrincipalContext(ContextType.Domain, sNetBiosName)
context.ValidateCredentials(sUsername, sPassword)
Run Code Online (Sandbox Code Playgroud)

在服务器上,使用NetBios名称需要20-30秒

PrincipalContext context = new PrincipalContext(ContextType.Domain, sDNSName)
context.ValidateCredentials(sUsername, sPassword)
Run Code Online (Sandbox Code Playgroud)

使用DNS名称,响应为0-2秒

有关需要在服务器上设置什么的想法,以加快使用NetBios名称的速度?

Har*_*wok 5

NetBIOS在大型网络中的速度非常慢. 这里解释了NetBIOS名称解析的工作原理.通常,Windows必须按以下顺序解析NETBIOS名称.

  1. 本地缓存
  2. lmhosts文件
  3. WINS服务器
  4. 网络广播

因此,您可以看到一个可以提高NetBIOS名称解析速度的方法是编辑服务器上的lmhosts文件,这样就可以完全脱离网络.按照此Microsoft KB将您的域和PDC添加到您的lmhosts文件.