PrincipalContext.ValidateCredentials使用NetBios名称在受信任域中变慢
我已经创建了一个服务,使用System.DirectoryServices.AccountManagementvalidation针对Active Directory的凭据。 我需要针对本地域以及可信域validation凭据。 在我的计算机上运行时,本地和受信任域的validation凭据的响应时间很快。 当我将此服务移动到我们的服务器时,本地域响应很快,但受信任的域响应非常慢(20 – 30秒)。
我还发现,如果我将PrincipalContext中的域名从NetBios名称更改为DNS名称,则会更正服务器上的性能问题。
这是一些例子
PrincipalContext context = new PrincipalContext(ContextType.Domain, sNetBiosName) context.ValidateCredentials(sUsername, sPassword)
在服务器上,使用NetBios名称需要20-30秒
PrincipalContext context = new PrincipalContext(ContextType.Domain, sDNSName) context.ValidateCredentials(sUsername, sPassword)
使用DNS名称,响应为0-2秒
有关需要在服务器上设置什么以便使用NetBios名称加快速度的任何想法?
NetBIOS在大型网络中的速度非常慢。 这里解释了NetBIOS名称解析的工作原理。 通常,Windows要按以下顺序解析NETBIOS名称。
- 本地缓存
- lmhosts文件
- WINS服务器
- 网络广播
因此,您可以看到一个可以提高NetBIOS名称解析速度的方法是编辑服务器上的lmhosts文件,这样就可以完全脱离网络。 按照此Microsoft KB将您的域和PDC添加到您的lmhosts文件中。
通过将WINS服务器地址添加到服务器,我能够加快响应时间。