C# LdapConnection Bind()总是在SSL上失败

C# LdapConnection Bind()总是在SSL上失败,c#,asp.net,active-directory,ldap,C#,Asp.net,Active Directory,Ldap,我需要使用Active Directory查询一些信息,这些信息只有通过SSL进行身份验证时才能访问。我可以进行匿名连接,但在尝试使用SSL时,总是会出现“LDAP服务器不可用错误”。关于这一点,论坛上有很多话题,我已经讨论过了,但还没有找到解决方案。此代码是在IIS Express上运行的ASP.NET MVC应用程序 LdapConnection conn = new LdapConnection("ldap.xxx.com:636/OU=xxx,DC=xxx,DC=xxx,DC=xxx")

我需要使用Active Directory查询一些信息,这些信息只有通过SSL进行身份验证时才能访问。我可以进行匿名连接,但在尝试使用SSL时,总是会出现“LDAP服务器不可用错误”。关于这一点,论坛上有很多话题,我已经讨论过了,但还没有找到解决方案。此代码是在IIS Express上运行的ASP.NET MVC应用程序

LdapConnection conn = new LdapConnection("ldap.xxx.com:636/OU=xxx,DC=xxx,DC=xxx,DC=xxx");
                    //conn.AutoBind = false;
                    conn.SessionOptions.ProtocolVersion = 3;
                    conn.AuthType = AuthType.Basic; //Tried with Negotiate as well
                    conn.Credential = new NetworkCredential(@"domain\user", "userPW", "domain");
                    conn.SessionOptions.SecureSocketLayer = true;
                    conn.SessionOptions.VerifyServerCertificate = new VerifyServerCertificateCallback((dev, cer) => true);
                    //conn.Timeout = new TimeSpan(1, 0, 0);
                    conn.Bind();
我使用带有PrincipalContext的容器字符串来验证此帐户的凭据,验证成功(发生在代码之前)。容器将我放入正确的节点,并且帐户凭据是匹配的。这就是为什么这个错误让我困惑。协议版本也是正确的。我已将verifycert回调设置为返回true,而不考虑证书

错误在第一行抛出,如果我删除容器,它将创建连接,但在调用.Bind()时无限期挂起。如果在建立连接后指定域,则会在.Bind()上抛出“不可用错误”。我不理解为什么它在容器中失败,因为它在使用PrincipalContext传递时可以工作

谢谢你的帮助