在我的开发机器上,我不得不安装一个AD。在原则上,它工作得很好,不过,它是第一个连接到AD的原理非常慢(30 seconds+)。在我看来,它似乎首先尝试连接到某个不存在的主机或目录,然后在超时之后(30秒)连接到我的AD并完成它应该做的事情。
我在连接LDP.exe和SSL时所观察到的相同行为。然而,使用ADSI-Edit,通过SSL进行连接是非常快速的.通过非SSL连接也是如此。
我看了看,如果我能看到什么东西在小提琴,但什么也没有。在事件日志里我什么也找不到。也许这和证书查找有关吧?这是与马凯特自签的。
更新
同时,我注意到一件可能给出提示的小事情:在系统事件日志中,当第一次建立到AD的SSL连接时,会出现以下消息:
在没有任何配置的_ldap._tcp.machineName服务器响应后,名称DNS的名称解析超时。
但是,该消息只注册一次,但每次连接到服务器都会使用30secs+。我还试图在主机文件中输入相应的条目,但是没有什么改变。
附加信息
可能这不是证书的问题,但可能有助于解决问题。因此,在这里,我创建证书的方式(或多或少是货物代码):
RootAuthority
makecert -pe -n "CN=MyDevRootAuthority" -ss my -sr LocalMachine -a sha1 -sky signature -r "MyDevRootAuthority.cer" 服务器-证书
makecert -pe -n "CN=[MyComputerName]" -ss my -sr LocalMachine -a sha1 -sky exchange -eku 1.3.6.1.5.5.7.3.1 -in "MyDevRootAuthority" -is MY -ir LocalMachine -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 "MyTestCertificate.cer" 创建之后,我将根权限移动到受信任的权限,并授予所需的权限。
发布于 2015-12-12 07:57:17
更新
在最近有了这个问题之后,我进行了更深入的研究,发现在构造ContextOption ServerBind时使用PrincipalContext解决问题是可靠的,除了上下文上的ValidateCredentials-method。
替代方式与SDS.P
附加信息:对我来说,使用SDS和SDS.AM总是很复杂的。由于其组件提供的错误信息常常是不相关和不准确的(由于使用的系统组件(ADSI)的内部层次结构复杂),它花费了大量的时间。最后,我将一些代码移到SDS.P命名空间中,尽管互联网上几乎没有关于如何使用的信息,但它似乎更合适和更好。我不能代表每个人或每个领域,但是从基于ADSI的组件转移到SDS.P (基于wldap32.dll)已经为我简化和澄清了很多。它甚至在大部分部件上异步工作。作为一种奖励,它是超快的。这里有一个很好的起点:https://msdn.microsoft.com/en-us/library/bb332056.aspx
旧解决方案问题来自于这样的情况,即我的开发计算机不是域的一部分。当我们在一台领域集成的机器上尝试了同样的事情之后,我看到了这一点,但问题并没有发生。
解决方案(适用于非AD嵌入式计算机)
码
在代码中,要与DirectoryContext连接,必须使用dns-后缀“.local”指定主机名。
[machinename].local网络适配器
此外,在“高级”-window中的网络适配器设置中,在“DNS”-tab下,必须将“本地”-suffix注册为连接DNS地址的DNS后缀。

证书
然而,我不需要更改证书。
https://stackoverflow.com/questions/33985216
复制相似问题